文字コードについてNo.24188
まこる さん 07/12/14 12:33
 
はじめまして。

Windowsで作成したテキストファイルをUNIXで処理する必要があり、秀丸を使ってShi
ftJIS→EUC変換しているのですが、以下の手順で文字コードの変換を行うと、特定文
字のコードが変わってしまうようで、そのファイルをUNIX上で動作させているOracle
へ取り込むと、それぞれの文字が"?"となってしまう現象が出ています。

---
《再現手順》
01.以下の文字を入力後、日本語ShiftJISとして保存。

  [TUV]

この時の各文字の文字コードは・・・
T(SJIS:0x8754 / EUC:0xADB5 / UTF8:0xE285A0)
U(SJIS:0x8755 / EUC:0xADB6 / UTF8:0xE285A1)
V(SJIS:0x8756 / EUC:0xADB7 / UTF8:0xE285A2)


02. 01で作成したファイルを開き、日本語EUCとして保存。

03. 02で保存したファイルを開き、各文字の文字コードを見ると・・・
T(SJIS:0xFA4A / EUC:0xADB5 / UTF8:0xE285A0)
U(SJIS:0xFA4B / EUC:0xADB6 / UTF8:0xE285A1)
V(SJIS:0xFA4C / EUC:0xADB7 / UTF8:0xE285A2)

※EUC及びUTF8については問題なさそうですが、ShiftJISのコードのみが別のコード
に置き換わっています。
---

原因や解決方法などがわかれば助かりますが、助言でも構いませんので御指南いただ
ければ幸いです。

[ ]
RE:24188 文字コードについてNo.24189
まこる さん 07/12/14 12:40
 
すいません、環境の記載を忘れました。
WindowsXPPro(32bit)+秀丸Ver7.07です。


>はじめまして。
>
>Windowsで作成したテキストファイルをUNIXで処理する必要があり、秀丸を使ってSh
>iftJIS→EUC変換しているのですが、以下の手順で文字コードの変換を行うと、特定
>文字のコードが変わってしまうようで、そのファイルをUNIX上で動作させているOra
>cleへ取り込むと、それぞれの文字が"?"となってしまう現象が出ています。
>
>---
>《再現手順》
>01.以下の文字を入力後、日本語ShiftJISとして保存。
>
>  [TUV]
>
>この時の各文字の文字コードは・・・
>T(SJIS:0x8754 / EUC:0xADB5 / UTF8:0xE285A0)
>U(SJIS:0x8755 / EUC:0xADB6 / UTF8:0xE285A1)
>V(SJIS:0x8756 / EUC:0xADB7 / UTF8:0xE285A2)
>
>
>02. 01で作成したファイルを開き、日本語EUCとして保存。
>
>03. 02で保存したファイルを開き、各文字の文字コードを見ると・・・
>T(SJIS:0xFA4A / EUC:0xADB5 / UTF8:0xE285A0)
>U(SJIS:0xFA4B / EUC:0xADB6 / UTF8:0xE285A1)
>V(SJIS:0xFA4C / EUC:0xADB7 / UTF8:0xE285A2)
>
>※EUC及びUTF8については問題なさそうですが、ShiftJISのコードのみが別のコード
>に置き換わっています。
>---
>
>原因や解決方法などがわかれば助かりますが、助言でも構いませんので御指南いた
>だければ幸いです。

[ ]
RE:24188 文字コードについてNo.24190
EA11R さん 07/12/14 13:21
 

EA11R@一般ユーザです。

秀丸側での対応などは担当さんが考えてくれる、として、基本的(?)なことを…。
勘違い等、訂正突っ込み歓迎です。

ローマ数字(i/ii/iii 等)や丸つき数字などは、Shift-JIS や JIS ではユーザ定
義の外字と言う扱いです。
でもって、ユーザ定義の外字には、NEC拡張外字とIBM拡張外字があって、同じ象
形文字が異なる文字コードで登録されている、と言う矛盾が発生してます

では、OS提供元のMicrosoft ではどう言う変換をしているかと言うと、
http://support.microsoft.com/default.aspx?scid=kb;ja;JP170559
を見た限りでは、IBM拡張文字のコードはできるだけ使わないように変換をして
いるのかな?
なので、外字は可能な限り、JIS X 0208 → NEC特殊文字 → IBM特殊文字 と言
う順番で利用/変換するコードの優先順位をつける方がいいのかな、と。
だからと言って、仕様を単純に変えると色々と問題も出てきそうですけどね。


でも結構前に、この絡みの議論があったような、なかったような…。

[ ]
RE:24190 文字コードについてNo.24191
まこる さん 07/12/14 14:27
 
EA11Rさん

コメントありがとうございます。


>ローマ数字(i/ii/iii 等)や丸つき数字などは、Shift-JIS や JIS ではユーザ定
>義の外字と言う扱いです。
>でもって、ユーザ定義の外字には、NEC拡張外字とIBM拡張外字があって、同じ象
>形文字が異なる文字コードで登録されている、と言う矛盾が発生してます

当方も"TUV・・・"は所謂機種依存文字であるという認識はあるの
ですが、文字コード変換でEUCにした際、何故文字コードが変換されるのか不思議だ
なぁと。
ひょっとすると何らかの理由があるのでしょうか?



>でも結構前に、この絡みの議論があったような、なかったような…。

自分でも引き続き調べてみます。
どうもありがとうございました。

[ ]
RE:24191 文字コードについてNo.24192
秀丸担当 さん 07/12/14 15:08
 

調べてみました。

EA11Rさんの言われるように、IBM拡張漢字であるローマ数字には、IBM選定のも
のとNEC選定のものがあります。

V5.00から、EUCで保存するときはJISコードには無いIBM選定を全てNEC選定に変
換して保存するように修正されています。
たしか、EUCで保存するときはNEC選定ではなければならないという報告があり、
そのようにしました。

V7.00から、EUCを読み込むときは、NEC選定をIBM選定に変換して読み込みます。
これは、過去ログの以下の報告によります。
http://hidemaruo.dip.jp:81/hidesoft/hidesoft_2/x21805.html#21805
V5.00の修正とは逆のようですが、EUCで保存するときは必ずNEC選定となるので、
EUCのファイル形式が異なることにはなりません。
IBM選定と解釈して読み込むのは、Windowsの入力はIBM選定(と思っていた)の
ようで、漢字の検索ができないことの対策のためです。


・・・と思っていたのですが、実際にTUVを入力してみたところ、TUVは
NEC選定で入力されていました。
Windowsの入力はIBM選定というわけではなく、バラバラでした。漢字は全てIBM
選定だったのですが、記号がバラバラでした。
ということはV7.00の修正は正しくなく、記号はそれぞれ別々に解釈する必要が
ありそうです。
V7.08を出すときに、そのように修正しようと思います。
仕様変更となるので、V7.08βを出してからにしようと思います。


Windowsの入力(*)

IBM選定         NEC選定         MS
FA40-FA49(*)    EEEF-EEF8                       @ABCDEFGHI
FA4A-FA53       8754-875D(*)                    TUVWXYZ[\]
FA54            EEF9            81CA(*)         ¬
FA55-FA57(*)    EEFA-EEFC                       UVW
FA58            878A(*)                        
FA59            8782(*)                        
FA5A            8784(*)                        
FA5B            879A            81E6(*)         ∵
FA5C-FA7E(*)    ED40-ED62                       \-~
FA80-FA9B(*)    ED63-ED7E                       -
FA9C-FAFC(*)    ED80-EDE0                       -
FB40-FB5B(*)    EDE1-EDFC                       @-[
FB5C-FB7E(*)    EE40-EE62                       \-~
FB80-FB9B(*)    EE63-EE7E                       -
FB9C-FBFC(*)    EE80-EEE0                       -
FC40-FC4B(*)    EEE1-EEEC                       @-K


と、ここまでは、EUCを読み込んだときの秀丸エディタ上の解釈の話で、EUCファ
イルで保存するときはNEC選定となるので、V7.00〜V7.07においてもEUCファイル
のファイル形式が変わってしまったわけではありません。

UNIX上で「?」となるのは、もともとIBM拡張漢字を表示できないからでしょう
か?

EUCでの保存形式の疑いがある場合は、以下のページからV4.19を使ってみると違
いがあるかもしれません。

秀丸エディタのその他の古いバージョン
http://hide.maruo.co.jp/software/hidemaruold.html

もしこれで解決する場合、[その他]→[動作環境]→[トラブル対策]あたりに拡張
漢字の扱いについての設定を付けたほうがいいかもしれないので結果を教えてい
ただけると助かります。

[ ]
RE:24192 文字コードについてNo.24194
まこる さん 07/12/14 15:48
 
秀丸担当様

ご回答いただきありがとうございました。
文字コード変換ロジックというか変換理由については理解できました。


>・・・と思っていたのですが、実際にTUVを入力してみたところ、TUVは
>NEC選定で入力されていました。
>Windowsの入力はIBM選定というわけではなく、バラバラでした。漢字は全てIBM
>選定だったのですが、記号がバラバラでした。
>ということはV7.00の修正は正しくなく、記号はそれぞれ別々に解釈する必要が
>ありそうです。
>V7.08を出すときに、そのように修正しようと思います。
>仕様変更となるので、V7.08βを出してからにしようと思います。

WindowsのShiftJISコードにTUVがそれぞれ2つ存在している事は
わかっていて、たぶんそれが機種依存対応(IBM/NEC)なのかなと。
ただ、秀丸を含め入力する時はNEC選定文字コードが適用され、
データ保存時にはIBM選定文字となる為、次回そのファイルを開いて
"U"などを検索してもひっかからず、ちょっとあたふたしていました。
ご面倒をおかけいたしますがよろしくお願いいたします。


>UNIX上で「?」となるのは、もともとIBM拡張漢字を表示できないからでしょう
>か?

質問をさせていただいた後、いろいろ調べたところ私も同様の疑問にぶちあたりまし
た。
Unix側の文字コード設定を調べてみます。


>EUCでの保存形式の疑いがある場合は、以下のページからV4.19を使ってみると違
>いがあるかもしれません。
>
>秀丸エディタのその他の古いバージョン
>http://hide.maruo.co.jp/software/hidemaruold.html
>
>もしこれで解決する場合、[その他]→[動作環境]→[トラブル対策]あたりに拡張
>漢字の扱いについての設定を付けたほうがいいかもしれないので結果を教えてい
>ただけると助かります。

実際行っている作業のデータ件数は150万件程ある為、本番環境でテストをするのは
難しく、また月1の作業である為、回答が遅くなってしまいますが、改めて結果をご
回答させていただきます。

どうもありがとうございました。

[ ]
RE:24194 文字コードについてNo.24203
秀丸担当 さん 07/12/17 17:58
 

>WindowsのShiftJISコードにTUVがそれぞれ2つ存在している事は
>わかっていて、たぶんそれが機種依存対応(IBM/NEC)なのかなと。
>ただ、秀丸を含め入力する時はNEC選定文字コードが適用され、
>データ保存時にはIBM選定文字となる為、次回そのファイルを開いて
>"U"などを検索してもひっかからず、ちょっとあたふたしていました。
>ご面倒をおかけいたしますがよろしくお願いいたします。

こちらの件はとりえずV7.08β1で修正してみたのでもしよろしければ試してみて
ください。
以下のページの一番下からダウンロードできます。
http://hide.maruo.co.jp/software/hidemaru.html

[ ]