- - PR -
文字化けについて
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-04-16 14:19
'−'の文字が'?'に化けていたのでそれを修正するロジックを考えたのですが
うまく動きませんなぜでしょうか? String text = ""; //文字化け対策 char moji; for(int i=0; i<str1.length(); i++){ moji=str1.charAt(i); if(moji=='?'){ text = text + "−"; }else{ text = text + moji; } } str1が化けている文字列です 環境はlinux+tomcatです [ メッセージ編集済み 編集者: kirito 編集日時 2004-04-16 14:29 ] | ||||||||||||
|
投稿日時: 2004-04-16 14:34
1:文字コードの存在はご存知ですよね?
2:googleなどで、"java 文字化け"と検索してみましたか? #多分、クライアントにWindowsを使っていると予想しますが | ||||||||||||
|
投稿日時: 2004-04-16 14:55
'−'がUnicode EUC変換で失敗しているということはわかっています
おそらく moji == '?' ではなくUnicodeにおける文字コードを指定すれば よさそうだということは分かります でも実際どういうコードを書けばよいかは全然わかりません | ||||||||||||
|
投稿日時: 2004-04-16 15:01
まぁそう言わずに悶吉さんの仰る通りにwebで調べてみてください。2つ目にヒットする http://www.ingrid.org/java/jserv/i18n/corruptedchar.html なんかを読めば、kiritoさんが明後日の方向に行ってしまっているのが理解できると思います。 | ||||||||||||
|
投稿日時: 2004-04-16 15:28
今回のケースはむしろ一つ目の http://www.dmz.hitachi-sk.co.jp/Java/Tech/i18n/unicode.html がビンゴではないでしょうか? MS932とShift_JISの違いは以下のコードを実行するとよくわかります。
| ||||||||||||
|
投稿日時: 2004-04-16 15:29
こんにちは。
仕事の納期に追われているので手短に。 ・「?」に化けているのではありません。出力の結果が「?」になっているだけです ・化けている(と思われる)文字のcharと「?」をデバッグ出力してみましょう
そうですか。
で、とりあえずこの文字の表示に関してだけは対応できます。 他の問題に関しては、他の方のアドバイスを参考にしてみると良いと思います。 [ メッセージ編集済み 編集者: BBC 編集日時 2004-04-16 15:39 ] | ||||||||||||
|
投稿日時: 2004-04-16 16:21
私の場合、一度全て URLEncode, URLDecode してから表示するようにしてますが、
どうしても OS が採用してる文字コードセットでカバーしてる範囲外の表示不可能な コードは 0x3F に強制変換されてしまうようで。 http://43.233.98.50:81/cobra/public_html/java/dencoder3.java アプレットにしてブラウザ上に舞台を移しても、エンコード時の16進がデコード時の文字コード セットのマトリックス範囲外だと、表示しようがないみたいです。 http://43.233.98.50:81/cobra/public_html/java/encode.html http://43.233.98.50:81/cobra/public_html/java/encoder.java java で nkf や kcc の機能を実装するのは無理なんでしょうか。 | ||||||||||||
|
投稿日時: 2004-04-16 18:23
Linux のターミナル上で
$ echo 屁 | nkf -j | jhd 00000000 1B 24 42 55 7B 1B 28 42 0A .$BU{.(B. 自分が作ったプログラムで $ java dencoder3 3 0 屁 %1B%24%42%55%7B 屁 (後、意味不明の文字化け) どちらも、「屁」という漢字を一旦 JIS コード化したものを、16進で出す共通部分があるが、 何故か自作の Java では nkf + jhd で出したものに含まれる後半3バイト分がどこかへ 飛んでしまっている。しかし、デコードは成功しているようだ。 一体、これはどういう訳なんでしょうか? |
1|2|3
次のページへ»