トップページ > 記事閲覧
中国語が表示できなくなった
名前:T.ODA 日時: 2020/09/10 21:25

お世話になっております。Windows向けのゲームを作っていまして、中国語版も出すことになっているのですが、 去年の10月の時点では中国語表示に問題がなかったのですが、 今同じようにプログラムを描いても中国語が正しく読み込めず文字化けして表示されるようになりました。 以下のようなプログラムを書いています。 //※↓ DxLib_Init() の前 SetUseCharCodeFormat(DX_CHARCODEFORMAT_UTF8); LPCSTR font_path = "data/txt/NotoSansCJKsc-Regular.otf"; // 読み込むフォントファイルのパス if (AddFontResourceEx(font_path, FR_PRIVATE, NULL) > 0) { } else { // フォント読込エラー処理 MessageBox(NULL,"フォント読込失敗","",MB_OK); } ChangeFont( "Noto Sans CJK SC Regular", DX_CHARSET_DEFAULT ); //テキストファイルから文字を読み込むところ char strMsg[3][81]; int iFileHandle = FileRead_open("test.txt"); FileRead_set_format(iFileHandle, DX_CHARCODEFORMAT_UTF8); FileRead_gets(strMsg[0], 80, iFileHandle); FileRead_gets(strMsg[1], 80, iFileHandle); FileRead_gets(strMsg[2], 80, iFileHandle); FileRead_close(iFileHandle); //読み込んだ文字を表示するところ DrawString(10, 20, strMsg[0], GetColor(255, 255, 255)); DrawString(10, 40, strMsg[1], GetColor(255, 255, 255)); DrawString(10, 60, strMsg[2], GetColor(255, 255, 255)); 去年の10月ごろはこれでOKでした。 そのころと今は開発環境は以下のように変わりました。 ・Windows7→Windows10 ・VC++も最新のもの ・DXlibも最新のもの 上記のプログラムのままでは今では問題があるのでしょうか? 申し訳ございませんん。なにもわからないため、こちらで質問させていただきます。 以上よろしくお願いいたします。
メンテ

Page: 1 |

解決 ( No.1 )
名前:T.ODA 日時:2020/09/10 23:05

以下の方法で無理やり解決できることが分かりました。 @まず テキストの1行目にダミーの文字列を追加する A//テキストファイルから文字を読み込むところ を以下のように修正する。 char strMsg[3][81]; int iFileHandle = FileRead_open("test.txt"); //まず最初の1行を読み飛ばす FileRead_gets(strMsg[0], 80, iFileHandle); //その後1行読み込むごとにFileRead_set_format()を実行 FileRead_set_format(iFileHandle, DX_CHARCODEFORMAT_UTF8); FileRead_gets(strMsg[0], 80, iFileHandle); FileRead_set_format(iFileHandle, DX_CHARCODEFORMAT_UTF8); FileRead_gets(strMsg[1], 80, iFileHandle); FileRead_set_format(iFileHandle, DX_CHARCODEFORMAT_UTF8); FileRead_gets(strMsg[2], 80, iFileHandle); FileRead_close(iFileHandle); これで一応直るような感じではありますが、かなり無理やりなので、問題ないかは気になりました。
メンテ
Re: 中国語が表示できなくなった ( No.2 )
名前:管理人 日時:2020/09/14 00:26

ご返信が遅くなり申し訳ありません すみません、最近追加したテキストファイルの文字コード形式の自動判別処理にバグがありました 最初の1行の読み飛ばしや、FileRead_set_format(iFileHandle, DX_CHARCODEFORMAT_UTF8); を 実行しなくても正常に読み込めるように修正したバージョンをアップしましたので、よろしければお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.3 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい)
メンテ
Re: 中国語が表示できなくなった ( No.3 )
名前:T.ODA 日時:2020/09/14 19:42

ご対応ありがとうございます。ダウンロードし使わせていただきます。
メンテ

Page: 1 |

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

   クッキー保存