みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
Win10 FMPA16です。
cURLオプションを使ってURLを挿入からAPIに投げているのですが、APIからの戻り値が
\u306f\u3058\u3081\u307e\u3057\u305f
のような形で日本語で読めません。
どうやらエスケープ付きのUnicode文字っぽいことは分かったのですが、これを変換するような関数を見つけることができず、
色々試したのですがより文字化けしたり?になってしまいます。
こちらの変換方法をご存知の方いらっしゃいましたらご教示頂きたいです。
Offline
FMP16なら文字変換関数 (TextDecode()、TextEncode())
が新規追加されていますので、利用できます。
Offline
「\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/
Offline
>qb_dpさん
ありがとうございます!
プラグインで実現できるのですね!
実行してみたところしっかりと日本語で表示されました。助かりました。
ちなみに余談なのですが、APIで返ってきた大量のjsonの中では
"name":"\u306f\u3058\u3081\u307e\u3057\u305f"
となっているのですが、一度要素ごとにフィールドに取り分けてからプラグインで日本語にしていこうと思い、
JSONGetElement ( GETAPIフィールド ; "name" )
とフィールドに取り出したところ、なぜかプラグインでデコードせずとも日本語で入力されました。。。
Offline
あ~! JSONは、16進数で表記されたUnicodeをサポートしているので、そのまま抽出すれば、良かったんですね。
Offline
Pages: 1
[ Generated in 0.004 seconds, 9 queries executed - Memory usage: 508.17 KiB (Peak: 513.92 KiB) ]