初心者のFileMaker pro Q&A

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

ログインしていません。

アナウンス

Claris FileMaker Pro 19 ヘルプ
新しい質問は、新規トピック から投稿して下さい。


#1 2017-12-28 17:11:20

いるか
メンバー

[解決] APIからの返り値(Unicode文字?)の日本語変換方法

Win10 FMPA16です。

cURLオプションを使ってURLを挿入からAPIに投げているのですが、APIからの戻り値が

\u306f\u3058\u3081\u307e\u3057\u305f

のような形で日本語で読めません。
どうやらエスケープ付きのUnicode文字っぽいことは分かったのですが、これを変換するような関数を見つけることができず、
色々試したのですがより文字化けしたり?になってしまいます。

こちらの変換方法をご存知の方いらっしゃいましたらご教示頂きたいです。

オフライン

#2 2017-12-28 22:45:37

Hiro
メンバー

Re: [解決] APIからの返り値(Unicode文字?)の日本語変換方法

FMP16なら文字変換関数 (TextDecode()TextEncode())
が新規追加されていますので、利用できます。

オフライン

#3 2017-12-29 09:04:47

qb_dp
メンバー

Re: [解決] APIからの返り値(Unicode文字?)の日本語変換方法

「\u306f\u3058\u3081\u307e\u3057\u305f」
これは、16進数になっているので
「関数:TextDecode()」では、デコード出来ないですね。

「関数:HexDecode」が使えるかと思いうましたが、FileMakerの場合、UTF-8 になっているようで今回は使えません。

色々方法はあると思いますが、
プラグインを使った場合の例:
フィールド1 に「\u306f\u3058\u3081\u307e\u3057\u305f」がある場合。

フィールド設定 [フィールド名;
SMPS_Exe( "$HEXDATA=\"" & フィールド1 & "\";
$Result=$HEXDATA.Split(\"\u\") | FOREACH { [System.Convert]::ToChar([System.Convert]::ToInt32($_,16)) };
[string]::Join(\"\", $Result)" )
]

ScriptMakerPS | FileMaker Plugin for Windows : https://sites.google.com/site/scriptmakerps/

オフライン

#4 2017-12-31 05:02:04

いるか
メンバー

Re: [解決] APIからの返り値(Unicode文字?)の日本語変換方法

>qb_dpさん
ありがとうございます!
プラグインで実現できるのですね!
実行してみたところしっかりと日本語で表示されました。助かりました。

ちなみに余談なのですが、APIで返ってきた大量のjsonの中では
"name":"\u306f\u3058\u3081\u307e\u3057\u305f"
となっているのですが、一度要素ごとにフィールドに取り分けてからプラグインで日本語にしていこうと思い、
JSONGetElement ( GETAPIフィールド ; "name" )
とフィールドに取り出したところ、なぜかプラグインでデコードせずとも日本語で入力されました。。。

オフライン

#5 2017-12-31 11:59:01

qb_dp
メンバー

Re: [解決] APIからの返り値(Unicode文字?)の日本語変換方法

あ~! JSONは、16進数で表記されたUnicodeをサポートしているので、そのまま抽出すれば、良かったんですね。

オフライン

クィック投稿

メッセージを書いて送信してください。
登録の確認

実在の人物による登録であることを確認します。

Board footer