
Windows環境で作成した「Shift-JIS(CP932)」のファイルを、
JAVAを使用して「EUC-JP」のファイルに変換したいのですが、
NEC選定文字(13区)等の追加された機種依存文字の変換ができません。
いろいろ調べてみたのですが、
文字コードの呼び方がサイトによってあいまいで、
どのページが正しいのかがわかりません。
・「Shift-JIS(CP932)」「EUC-JP」の正確な情報が記述されたサイト
・JAVAにおける文字コードの変換のノウハウ
に関しての知識をお持ちの方がいましたら、教えてください。
以下は変換に使用したJAVAのソースコードです。
InputStreamReader ins = new InputStreamReader(new FileInputStream(iFile), "windows-31j");
OutputStreamWriter outs = new OutputStreamWriter(new FileOutputStream(oFile), "euc-jp");
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
以上です。
よろしくお願いします。

No.2ベストアンサー
- 回答日時:
>テキストエディタで、文字コードを「EUC-JP」に設定し「丸付きの1」を記入すると、画面上で確認できてしまいます。
最近のWindowsは内部コードがUnicodeですので画面上で確認できるのは必然ではないかと。
※画面上に出る時点ではメモリ上はUnicodeでファイルに保存する際に符号化されるはずです。
>また、バイナリエディタで作成したファイルを確認したところ、
>「0xADA1」で確認できてしまいます。
>これは、テキストエディタが勝手に「EUC-JP-ms」に変更しているのでしょうか?
そうですね。EUC-JPの種類は良く知らないのですが、
WindowsのShift_JISは純粋なShift_JISではないのと同義でしょう。
>NEC&IBMのベンダ依存文字が「EUC-JP」に定義はされているけど、Windows-31j → Unicode → EUC-JPの変換時に、Unicodeと他の文字コードとの対応の問題があって表示できないのでしょうか?
EUC-JPにベンダ依存文字は定義されていません。
EUC-JP-MSに定義されていてWindowsのEUCはこちらの文字セットを使っているにすぎないようです。
Javaの場合「EUC_JP_Solaris」というのがWindows-31J≧Shift_JISの関係と同様のようです。
参考URL:http://d.hatena.ne.jp/mir/searchdiary?word=*%5BJ …
お返事ありがとうございます。
おかげさまで、理解を得ることができました。
私は、文字コードについて、Windows環境ではShift-JISが使用されていると思っていた口なので、今回のことで大変勉強になりました。

No.1
- 回答日時:
>NEC選定文字(13区)等の追加された機種依存文字の変換ができません。
NEC選定文字って○付きの1とかのこと仰っていますよね。
だとすると、EUC-JP上では定義されていない文字ですので変換不可能です。
考え方としては
>InputStreamReader ins = new InputStreamReader(new FileInputStream(iFile), "windows-31j");
>OutputStreamWriter outs = new OutputStreamWriter(new FileOutputStream(oFile), "euc-jp");
こちらで合っています。
これは
入力ソースはWindows-31Jとして解釈しJavaの内部コードであるUnicodeに変換。
出力ソースはJavaの内部コードであるUnicodeからEUCに変換して出力となります。
この際に、Windows-31J→Unicodeは変換可能ですが、NEC選定文字はEUC-JPに存在しないためUnicode→EUC-JPの割り当てができずに結果文字化けします。
この回答への補足
ご返答ありがとうございます。
補足(追加質問?)となります。
>NEC選定文字って○付きの1とかのこと仰っていますよね。
仰る通りのNEC&IBMのベンダ依存文字です。
>だとすると、EUC-JP上では定義されていない文字ですので変換不可能です。
テキストエディタで、文字コードを「EUC-JP」に設定し「丸付きの1」を記入すると、画面上で確認できてしまいます。
また、バイナリエディタで作成したファイルを確認したところ、
「0xADA1」で確認できてしまいます。
これは、テキストエディタが勝手に「EUC-JP-ms」に変更しているのでしょうか?
(テキストエディタはNoEditorを使用し、文字コードを「EUC」に指定しました。また、NoEditorについて調べてみましたが、「EUC」に対応する文字コードの正式名称が何であるかがわかっていません。すみません・・・)
NEC&IBMのベンダ依存文字が「EUC-JP」に定義はされているけど、Windows-31j → Unicode → EUC-JPの変換時に、Unicodeと他の文字コードとの対応の問題があって表示できないのでしょうか?
以上です。
長くなってしまい申し訳ありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- その他(プログラミング・Web制作) 文字コード及びフォントに関する次の記述を読み,適切なものをすべて選べ。 ASCIIとは,英数字だけを 4 2023/01/11 19:10
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- C言語・C++・C# S-JIS → JIS コード変換するには 3 2023/02/09 23:55
- PDF acrobatでwordファイルをpdfに変換すると文字化けする 3 2023/02/10 09:31
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- マウス・キーボード 教えて! AppleのMagic Keyboard(JIS)をWindows 10で使用次第のですが 2 2022/06/01 18:07
- Java VScodeのターミナルの文字化けについて 1 2022/09/27 22:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
4b/5b変換をJavaで
-
CStringをLPCTSTRへ変換
-
文字を整数(int)に変換
-
補数について質問
-
javaのpixelの色の指定に関して
-
なぜか + が半角スペースに変換...
-
pasteHTMLでパスが勝手に変換さ...
-
カタカナの「ソ」以降の文字が...
-
publicがprotectedになった場合...
-
ソース型、ターゲット型につい...
-
PythonのUnicode文字について
-
Javaプログラミングについて
-
データの型について
-
ダブルクォーテーションのrepla...
-
10進201、16進C9 のASCIIコー...
-
java 16進数文字列を0x1足した...
-
for in文のkey取得できない
-
半角の&(アンド)文字をサーブレ...
-
javaで「全角が含まれているか...
-
日本測地系(秒単位)の座標を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javaで質問です。 文字列2023/2...
-
ダブルクォーテーションのrepla...
-
javascriptで文字列のsjis利用...
-
javaの初歩的な質問です。
-
Visual Basic でのコードをASCI...
-
JavaのStringクラスに「外字」...
-
Path型をString型へ変換する(Java)
-
エクセルVBAで「〜」が表現でき...
-
int型のゼロ埋め
-
JAVAでのShift-JISとEUC-JP間の...
-
C言語32bitから64bitの移行につ...
-
UTF-8とUnicodeの互換性
-
文字列の比較
-
COBOLで半角カナを全角カナに変換
-
substring バイト単位でやりたい
-
Windows-31Jからutf-8への変換...
-
カタカナをローマジに変換する。
-
[Javascript]エンターキー押下...
-
byte型のマイナスの扱いについて
-
文字化け対策について
おすすめ情報