ギリシャ数字の差分を無くすには?

解決


おのっち  2006-03-10 02:03:48  No: 94518

はじめまして。
いつも参考にさせて頂いています。

質問させてください。
VB6.0で簡単なファイル操作をしています。

①CSVファイルを行毎に読み込みます。(Openを使用しています)
②新規CSVファイルを作成します。(Open 〜  Outputを使用しています)
③ ①で読み込んだ不要な行以外のデータを②で作成したCSVファイルに書き込みます。
④ ③が終了した後、DF等のツールを使用し、元のファイルと、書き込んだファイルの差分を確認した結果、"Ⅰ"、"Ⅱ"、"Ⅲ"等のギリシャ数字のみ異なると表示されました。
これは、どのようなことが原因でしょうか?
また、解決方法がありましたらよろしくお願い致します。


魔界の仮面弁士  2006-03-10 19:07:15  No: 94519

> ギリシャ数字
それは「ローマ数字」です…。(^_^;)

ギリシャ数字はこっち。
http://mkatz.web.wesleyan.edu/grk202/vocabulary/greek_numerals.html

> のみ異なると表示されました。
たとえば、「II」を表すコードは、Shift_JIS(というか Windows-31J)にて、
Chr(&HFA4B) と Chr(&H8755) の 2箇所にマッピングされているのです。

ところが Unicode では、そうした曖昧さを減らすため、その文字が
ChrW(&H2161) のみで定義されています。

そして、この一対多となる関係ゆえに、VB の String型(内部的にはUnicode)を
経由させた場合、復元時にコードが変化してしまう……という状況が起きます。

関連情報として、下記をご覧下さい。
http://support.microsoft.com/kb/170559/ja


魔界の仮面弁士  2006-03-10 19:30:15  No: 94520

>> ギリシャ数字
> それは「ローマ数字」です…。(^_^;)
こっちの方がわかりやすいかな。
http://www.s-ivy.jp/letter_numeral.html

で、本題の件に関しては、文字セットの仕様上どうにもならないので、
  案1) 文字列ではなく、バイナリデータとして処理する。
  案2) 結果の内容比較は、バイナリ比較ではなくテキスト比較で行う。
  案3) マッピングが重複する文字は、一方のコードに統一させる。
などの手法で回避する事を検討してください。

# 案1はプログラム側の対処、案2は運用での対処という事で。


おのっち  2006-03-10 22:31:12  No: 94521

魔界の仮面弁士様
お返事ありがとうございます。

>>> ギリシャ数字
>> それは「ローマ数字」です…。(^_^;)
>こっちの方がわかりやすいかな。
すみません、初歩的な間違いを・・・

で、本題の方に入ります。
文字セットに関しましては、VBではどうにもならなそうですので、
頂いた、案2)を試します。
本当にありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加