Re: UTF8 での使用について ( No.1 ) |
- 名前:yumetodo 日時:2020/08/12 22:54
> また、FileRead_getc で一文字を読み込むにはどのような処理が必要になりますか?
そもそも「一文字」をどう定義するかという問題があります。
Unicodeな現代を生きる私達にとって、「一文字」の定義は4通り存在します。
- byte
- code units
- code points
- grapheme cluster
詳しくは
C++標準化委員会、ついに文字とは何かを理解する: char8_t
ttps://qiita.com/yumetodo/items/54e1a8230dbf513ea85b
FileRead_getcではbyte単位の「一文字」を取得できますが、大抵の場合でこれでは困るでしょう。
つまるところ、その場合FileRead_getcは使い物にならないということです。
FileRead_getsだったかと思いますがそういう複数byte取れるものを使うことが必要になります。
というかそもそも一文字ずつファイルから読み込みたい需要 #とは という思いです。そういう設計自体をやめるべきではないでしょうか。
一度全部読み込んで、後でGetCharBytesを使うなり、icuのコードポイントごとにたどっていけるイテレータを使うなりしてアクセスしていくのがいいと思います。
|
Re: UTF8 での使用について ( No.2 ) |
- 名前:管理人 日時:2020/08/12 23:22
> この場合、プロジェクトの設定の「文字セット」の項目は「マルチ バイト文字セットを使用する」
> に変更しなければなりませんか?
はい、UTF8 を使用する場合は「マルチ バイト文字セットを使用する」の設定にする必要があります
> また、FileRead_getc で一文字を読み込むにはどのような処理が必要になりますか?
yumetodoさんも仰られていますが、こちらは標準関数の fgetc を模して実装した関数で、
読み込む文字が全て1byteの場合は問題ないのですが、1文字が 2byteだったり 3byteだったりする
UTF8 では使い物にならないと思います
同じく yumetodoさんも仰られていますが FileRead_gets で行単位で読み込むか、ファイルを丸ごと
メモリに全て読み込んだ後、GetCharBytes で 1文字のbyte数を確認しながら文字の処理を行うようにしてください m(_ _)m
<関数リファレンス GetCharBytes>
https://dxlib.xsrv.jp/function/dxfunc_other.html#R22N2
|
Re: UTF8 での使用について ( No.3 ) |
- 名前:Anonymous.exe (解決) 日時:2020/08/13 08:35
ありがとうございます。
GetCharBytes の存在をすっかり忘れていました...
|