- 締切済み
ユニコード変換
javaでユニコード変換ができるクラスがあるのでしょうか? native2asciiのような変換をjavaからしたいのです。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#1>例えば、"あ"を、"\u3042"にしたいのです。 既に述べたように文字(Character)は、ユニコードなので、文字を16進表示してやるだけです。(場合によってはそれだけではうまくない場合もあるかもしれません) ---------------------------------------------------------------- public class Sample { public static void main(String arg[]){ String text = "あいうえお"; for(int i=0;i<text.length();i++){ System.out.printf("\\u%04X%n", Character.codePointAt(text, i)); } } }
- PecoPlus
- ベストアンサー率76% (144/188)
こんばんは。 要するにユニコードエスケープをしたい、もしくはされたファイルを読みたいということですよね。 java.util.Propertiesクラスのsaveメソッドとstoreメソッドにほぼ正解があると思います。 ソースコードを見て参考にされてはどうですか? 特にプライベートメソッドのloadConvertメソッドとsaveConvertメソッドがミソのようです。
- sha-girl
- ベストアンサー率52% (430/816)
>String#getByteをしても、取得できるのはバイトデータです。 getBytesで取得します。 上位バイトと下位バイトを繋げば 「あ」なら3042(16進)になります。 emi2006さんのやろうとしていることは標準クラスではありませんので自作してください。 参考までに簡単なサンプルを作ってみました。 import java.io.*; public class test{ public static void main(String argv[]){ try{ String str = "あいうえお"; byte bArray[] = str.getBytes("UTF-16LE"); for( int i = 0 ; i < bArray.length - 1 ; i+=2 ){ char cCode = (char)(bArray[i] + bArray[i+1]*0x100); System.out.println(Integer.toHexString(cCode)); System.out.println("\n"); } }catch(Exception e){ System.out.println("error\n"); } } } 実行すると 3042 3044 3046 3048 304a と表示されます。 Integer.toHexStringで16進の「文字列」に変換しています。
- orange_chan
- ベストアンサー率100% (1/1)
BLUEPIXYさんが言われているように内部ではunicodeで持っているので、値が設定された時点でunicodeだと思うのですが。。。 いまいちやりたいことがピンときません。 とりあえず、参考までに。。 エンコード変換は String#getByteを使用するとできます。
補足
ありがとうございます。 内部のバイナリとは関係なく、ユニコードを「文字列」として表示したいのです。 補足にもあげたように、 "あ"という文字列を、"\u3042"という文字列にしたいのです。 String#getByteをしても、取得できるのはバイトデータです。 native2asciiを使ったことがあるでしょうか? あれは、ファイルに"あ"とある文字を"\u3042"という「文字列」に変換してくれます。 文字列を、バイナリデータではなく、文字列表記であらわしたいのです。 伝わりますでしょうか?
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
ファイルから読込時に(InputStreamReaderで) charset を指定して読込む(あるいは、書き出す)のが常套手段だと思います。 java では、ソースコードが記述されている文字コードがなんであれ、 内部的には、ユニコードとして文字は扱われています。
補足
すいません。説明不足でした。 ユニコード変換されたファイルを読むのではなく、 文字列をユニコード文字列に変換したいのです。 native2asciiを使ったような文字列が変換を、java実行時に行いたいのです。 例えば、"あ"を、"\u3042"にしたいのです。
お礼
Javaの標準クラスにあるかどうか知りたかっただけでした。 ありがとうございました。