トップページ > 記事閲覧
Android:UTF8からSJISへの変換
名前:ギウ 日時: 2017/04/04 10:18

お世話になっております。 DXライブラリとは関係ないのですが、 AndroidでUTF8からSJISに変換したいのですが上手くいきません。 例えば↓な感じにすると、setlocaleで0が返ってきてしまいます。他に"jpn"や"JPN"等も試しました。 { char *loc=setlocale(LC_CTYPE,"ja_JP.Shift_JIS"); if( loc==0 ) return 0; // ERROR wcstombs(sjis,utf8,100); } もし分かる方いましたら教えてください。 P.S やりたいことは、「SJISに対応したフォント画像の表示」です。 現状は、↓の方法で強引に表示させてます。 =========== sjis.cpp に普通にchar型で文字列を書いて、SJISで保存。 コンパイル時に「warning : illegal character encoding in string literal」が大量に出ますが、無視。 その文字列を使ってフォントを表示させる。 =========== これなら一応は表示できるんですが、sprintf等が使えないので不便なのと、リビルド時に他のwarningが流れてしまうので。 #pragma warning(disable:????)で消せればいいんですけど、warning番号が無いので消せず。 テキストのみを保存しておいて読み込む形にすれば、warning問題はなくなりますけど。 速度やメモリを考えると、SJISをそのまま読み込んだ方が良さそうですが、できれば変換方式にも対応しておきたいです。 よろしくお願いいたします。
メンテ

Page: 1 |

Re: Android:UTF8からSJISへの変換 ( No.1 )
名前:管理人 日時:2017/04/05 23:28

リファレンスには載っていませんが、関数 ConvertStringCharCodeFormat を使用すると UTF8 から SJIS に変換することが出来ます // 文字列の文字コード形式を別の文字コード形式に変換する int ConvertStringCharCodeFormat( int SrcCharCodeFormat /* DX_CHARCODEFORMAT_SHIFTJIS 等 */ , const void *SrcString, int DestCharCodeFormat /* DX_CHARCODEFORMAT_SHIFTJIS 等 */ , void *DestStringBuffer ) ; UTF8 から SJIS に変換する場合は以下のように記述します ConvertStringCharCodeFormat( DX_CHARCODEFORMAT_UTF8, UTF8String, DX_CHARCODEFORMAT_SHIFTJIS, SJISString ) ; よろしければお試しください m(_ _)m
メンテ
Re: Android:UTF8からSJISへの変換 ( No.2 )
名前:ギウ(解決) 日時:2017/04/06 15:50

おお、変換できました! 超お手軽ですね^^ 有難うございます。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存