2018-10-31に更新

cocos2d-jsでIn-app billingの文字化け対策

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開発者

Crieitの開発者です。 Webエンジニアです(在宅)。大体10年ちょい。 記事でわかりにくいところがあればDMで質問していただくか、案件発注してください。 業務依頼、同業種の方からのコンタクトなどお気軽にご連絡ください。 業務経験有:PHP, MySQL, Laravel, React, Flutter, Vue.js, Node, RoR 趣味:Elixir, Phoenix, Nuxt, Express, GCP, AWS等色々 PHPフレームワークちいたんの作者

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント