トップページ > 記事閲覧
windowsとandoroidの utf8について
名前:名無し 日時: 2018/01/22 12:23

DxLib_Init()呼び前に SetUseCharCodeFormat(DX_CHARCODEFORMAT_UTF8);呼びましたが、 DrawString(0, 0,u8"こんにちは", 0xffffffff)実行するときは文字化けてしまいました。 アンドロイド版では use of undeclared identifier 'u8'というエラーが出てしまいました。
メンテ

Page: 1 |

Re: windowsとandoroidの utf8について ( No.1 )
名前:名無し 日時:2018/01/22 12:47

個人的にはutf16が好きです。 どの言語のパソコンも文字が化けないし、どの文字も2byteで(4byteの文字)、処理が簡単です。 全部utf16に統一し、アンドロイド版だけutf8に変化してDrawString呼ぶほうがいいでしょうか?
メンテ
Re: windowsとandoroidの utf8について ( No.2 )
名前:管理人 日時:2018/01/22 14:11

手元の環境で DxLib_Init の呼び出し前に SetUseCharCodeFormat(DX_CHARCODEFORMAT_UTF8); を 実行してから DrawString(0, 0,u8"こんにちは", 0xffffffff) を実行すると文字化けせず「こんにちは」と表示されました お使いのDXライブラリのバージョンは幾つでしょうか? 最近のバージョンまで DxLib_Init の呼び出し前に SetUseCharCodeFormat(DX_CHARCODEFORMAT_UTF8); を 実行しても正しく使用文字コードが変更されない動作しないバグがありましたので、お手数で申し訳ありませんが よろしければこちらの最新バージョンでお試しになってみてください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.exe // Windows版 C++ Builder 10.1 Berlin 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_ARM.exe // Android版 ARM用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_x86.exe // Android版 x86用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース ( 中身を既存のライブラリのファイルに上書きして、VisualStudioをお使いの場合は『リビルド』を、  BCCをお使いの場合は『再構築』をして下さい ) > アンドロイド版では > use of undeclared identifier 'u8'というエラーが出てしまいました。 Android のコンパイラは u8 に対応していないようです ただ、Android のコンパイラは utf-8 のソースファイルしか対応していないので、utf-8 の ソースファイルに "こんにちは" と記述すると u8 がなくても utf-8 の文字列リテラルとなります > 個人的にはutf16が好きです。 > どの言語のパソコンも文字が化けないし、どの文字も2byteで(4byteの文字)、処理が簡単です。 日本人としてはアルファベットも日本語の文字もほぼ等しく1文字 2byte となっている utf-16 は 扱いやすいフォーマットですが、英語圏の方々からすると utf-8 なら 1byteで表現できるアルファベットの 文字まで 2byteになってしまう utf-16 は嫌われていて、現在世界的には『みんな utf-8 を使おう!』となっているようです > 全部utf16に統一し、アンドロイド版だけutf8に変化してDrawString呼ぶほうがいいでしょうか? 文字コードの問題に関しては現状最適解が無い状態なので、名無しさんが一番やりやすい方法を採用されるのが一番だと思います
メンテ
Re: windowsとandoroidの utf8について ( No.3 )
名前:名無し 日時:2018/01/22 15:01

> お使いのDXライブラリのバージョンは幾つでしょうか? 3.18cでしたが、そのリンクのDxLibVCTest.exeダウンロードして、VisualStudio2017で再構成しても、同じでした。、恐らくこちらの環境の問題でしょう。 SetUseCharCodeFormat(DX_CHARCODEFORMAT_UTF8)を呼んだ後で、 DrawString(0, 0,u8"こんにちは", 0xffffffff)では文字化けました、 DrawString(0, 0,"こんにちは", 0xffffffff)では実行すると文字化けせず「こんにちは」と表示されました。 何故かこちらの環境ではSetUseCharCodeFormat(DX_CHARCODEFORMAT_UTF8)を呼んだ後も、 DrawStringはshift-JISになっています。 こちらの環境の問題で、時間を取らせてすみません。 親切にご回答ありがとうございます。
メンテ
Re: windowsとandoroidの utf8について ( No.4 )
名前:管理人 日時:2018/01/22 23:52

> SetUseCharCodeFormat(DX_CHARCODEFORMAT_UTF8)を呼んだ後で、 DrawString(0, 0,u8"こんにちは", 0xffffffff)では文字化けました、 DxLib_Init() を実行する前に SetUseCharCodeFormat(DX_CHARCODEFORMAT_UTF8); を実行する必要がありますが、 その点は大丈夫でしょうか? // DxLib_Init() を実行する前に行う SetUseCharCodeFormat(DX_CHARCODEFORMAT_UTF8); if( DxLib_Init() < 0 ) { return -1; } DrawString(0, 0,u8"こんにちは", 0xffffffff); また、今までお使いだった 3.18c が使われてしまっているという可能性もありますので、 3.18c があったフォルダを削除したり、フォルダ名を変更するなどして参照されないようにしてみてください m(_ _)m > こちらの環境の問題で、時間を取らせてすみません。 この機能に関しては環境による影響が少ないので、恐らく SetUseCharCodeFormat(DX_CHARCODEFORMAT_UTF8); を実行する タイミングか、昔のバージョンが使用されてしまっているかのどちらかだと思います
メンテ
Re: windowsとandoroidの utf8について ( No.5 )
名前:yumetodo 日時:2018/01/23 23:18

>文字コードの問題に関しては現状最適解が無い状態なので C++標準化委員会の連中がcahr8_t型を導入しないからこういうことに・・・
メンテ
Re: windowsとandoroidの utf8について ( No.6 )
名前:名無し(解決) 日時:2018/01/24 00:08

> タイミングか、昔のバージョンが使用されてしまっているかのどちらかだと思います 解決しまた。ありがとうございます。 バージョンの問題でした。昨日失敗したのはadditional Library Directoriesの設定がDxLibVCTestに変えませんでしたから。 あまり古いバージョンではないので、バージョンの問題と思いませんでした。 > C++標準化委員会の連中がcahr8_t型を導入しないからこういうことに 導入したとしても、最適解とは限りません。中国語や日本語など、大量の2byteの文字を使うなら、utf16のほうがいいかもしれません。
メンテ

Page: 1 |

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

   クッキー保存