初心者のFileMaker pro Q&A (旧掲示板)

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

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

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


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

いるか
Member

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

Win10 FMPA16です。

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

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

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

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

Offline

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

Hiro
Member

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

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

Offline

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

qb_dp
Member

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/

Offline

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

いるか
Member

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

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

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

Offline

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

qb_dp
Member

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

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

Offline

Registered users online in this topic: 0, guests: 1
[Bot] claudebot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 511.71 KiB (Peak: 517.99 KiB) ]