cocos2d-jsを使ったAndroidアプリで、
In-app billingのアイテムデータを取得して価格を表示しようとしたら
思い切り文字化けしていた。(円マークが全角だったので)
どうもJavaからjavascript側にデータを渡す際に文字化けを起こしてしまうらしい。
In-app billingで取得したJSONをそのまま渡していたのだが、
よく見るとこれは全角文字がunicodeエスケープされていない。
他のアプリではunicodeエスケープされていると問題なかったので
下記
JavaのUnicode文字列の変換用メソッド
で紹介されているメソッドを改造して、
JSONの全角文字だけをエスケープする関数を作ってjs側に渡したら問題なく動くようになった。
|javascript|
private static String convertToUnicode(String original)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < original.length(); i++) {
int code = Character.codePointAt(original, i);
if (code < 256) {
sb.append(original.charAt(i));
} else {
sb.append(String.format("\u%04X", Character.codePointAt(original, i)));
}
}
String unicode = sb.toString();
return unicode;
}
||
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント