アプリ版:「スタンプのみでお礼する」機能のリリースについて

javaでユニコード変換ができるクラスがあるのでしょうか?
native2asciiのような変換をjavaからしたいのです。

A 回答 (5件)

ファイルから読込時に(InputStreamReaderで) charset を指定して読込む(あるいは、書き出す)のが常套手段だと思います。



java では、ソースコードが記述されている文字コードがなんであれ、
内部的には、ユニコードとして文字は扱われています。

この回答への補足

すいません。説明不足でした。
ユニコード変換されたファイルを読むのではなく、
文字列をユニコード文字列に変換したいのです。
native2asciiを使ったような文字列が変換を、java実行時に行いたいのです。
例えば、"あ"を、"\u3042"にしたいのです。

補足日時:2006/06/20 10:22
    • good
    • 0

BLUEPIXYさんが言われているように内部ではunicodeで持っているので、値が設定された時点でunicodeだと思うのですが。

。。
いまいちやりたいことがピンときません。

とりあえず、参考までに。。
エンコード変換は
String#getByteを使用するとできます。

この回答への補足

ありがとうございます。
内部のバイナリとは関係なく、ユニコードを「文字列」として表示したいのです。
補足にもあげたように、
"あ"という文字列を、"\u3042"という文字列にしたいのです。

String#getByteをしても、取得できるのはバイトデータです。

native2asciiを使ったことがあるでしょうか?
あれは、ファイルに"あ"とある文字を"\u3042"という「文字列」に変換してくれます。

文字列を、バイナリデータではなく、文字列表記であらわしたいのです。


伝わりますでしょうか?

補足日時:2006/06/20 15:57
    • good
    • 0

>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進の「文字列」に変換しています。
    • good
    • 0
この回答へのお礼

Javaの標準クラスにあるかどうか知りたかっただけでした。
ありがとうございました。

お礼日時:2006/06/20 20:04

 こんばんは。



 要するにユニコードエスケープをしたい、もしくはされたファイルを読みたいということですよね。

 java.util.Propertiesクラスのsaveメソッドとstoreメソッドにほぼ正解があると思います。
 ソースコードを見て参考にされてはどうですか?

 特にプライベートメソッドのloadConvertメソッドとsaveConvertメソッドがミソのようです。
    • good
    • 0

#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));
}
}
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!