⑴ java怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
通过JDK1.6知道String类中getBytes(”编码“)方法可以讲一个数用指定的编码转成一个字节数组,String中通过指定的 charset解码指定的 byte 数组,构造一个新的String。代码如下:
try{
String s = "java学习";
System.out.println(s);
String result = new String(s.getBytes("GB2312"),"iso-8859-1");
System.out.println(s);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
(1)java编码转换工具类扩展阅读:
getBytes() 方法有两种形式:
1、getBytes(String charsetName):使用指定的字符集将字符串编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
2、getBytes():使用平台的默认字符集将字符串编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
参考资料:
网络-getBytes()
⑵ java怎么把utf-8的字符串转换为gb2312格式
Java中字符串转码,根据实际运用的环境有以下三种方式
1、使用Java.lang.String
这是最常用的方法,先用对应编码获取字节,然后重新构造新编码,示例代码如下:
Strings="清山";
byte[]b=s.getBytes("utf-8");//编码
Stringsa=newString(b,"gb2312");//解码:用什么字符集编码就用什么字符集解码
2、java.io.InputStreamReader/OutputStreamWriter:桥转换
读写文件的应用中,可以使用这种方式,直接在IO流构造中转换,示例代码如下:
InputStreamis=newFileInputStream("C:/项目进度跟踪.txt");//文件读取
InputStreamReaderisr=newInputStreamReader(is,"utf-8");//解码
OutputStreamos=newFileOutputStream("C:/项目进度跟踪_gb2312.txt");//文件输出
OutputStreamWriterosw=newOutputStreamWriter(os,"gb2312");//开始编码
3、java.nio.Charset
使用nio中的Charset转换字符,示例代码如下:
CharsetinSet=Charset.forName("utf-8");//解码字符集
CharsetoutSet=Charset.forName("gb2312");//编码字符集
CharsetDecoderde=inSet.newDecoder();//解码器
CharsetEncoderen=outSet.newEncoder();//编码
⑶ JAVA里的编码转换,懂的进来看看!!!!!
c:\Java\jdk1.6.0_05\bin中有个native2ascii.exe文件就是了
使用:在这个bin文件夹中有a.txt它的内容是汉字“你好”,在DOS提示符(环境变量版要配置)或者进入bin目录下权输入 native2ascii a.txt b.txt
然后bin文件夹里就生成b.txt,打开b.txt你会看到/u4f60/u597d
反过来就是Unicode转汉字
⑷ 找一个能将JAVA代码中Unicode编码为字符集转换为汉字的小软件
利用JDK中自带的native2ascii工具就很好
如果是在项目中,可以直接拷贝%JDK%/bin下native2ascii.exe至项目根目录,然后类中这样调用即可
中文转UNICODE(srcFileName为中文文件路径)
StringBuffer tempSb = new StringBuffer();
Process p = Runtime.getRuntime().exec(
"native2ascii "+srcFileName);
InputStreamReader child_in = new InputStreamReader(p
.getInputStream());
int c;
while ((c = child_in.read()) != -1) {
tempSb.append((char) c);
}
System.out.println(tempSb);
UNICODE转中文(srcFileName为UNICODE文件路径)
StringBuffer tempSb = new StringBuffer();
Process p = Runtime.getRuntime().exec(
"native2ascii -reverse "+srcFileName);
InputStreamReader child_in = new InputStreamReader(p
.getInputStream());
int c;
while ((c = child_in.read()) != -1) {
tempSb.append((char) c);
}
System.out.println(tempSb);
⑸ java里如何将字符转为url码
Java可以使用URLEncoder提供的转换字符的方法来对普通字符串进行转换格式,示例如下:
importjava.net.URLDecoder;
importjava.net.URLEncoder;
publicclassURLDecoderTest{
publicstaticvoidmain(String[]args)throwsException{
//将application/x-www-form-urlencoded字符串
//转换成普通字符串
//必须强调的是编码方式必须正确,如的是gb2312,而google的是UTF-8
StringkeyWord=URLDecoder.decode("%E6%96%87%E6%A1%A3","gb2312");
System.out.println(keyWord);//将普通字符串转换成
//application/x-www-form-urlencoded字符串
//必须强调的是编码方式必须正确,如的是gb2312,而google的是UTF-8
StringurlStr=URLEncoder.encode("文档","gb2312");
System.out.println(urlStr);
}
}
⑹ native2ascii鐢ㄦ硶瑙f瀽
native2ascii鏄痵un java sdk鎻愪緵鐨勪竴涓宸ュ叿銆傜敤鏉ュ皢鍒鐨勬枃鏈绫绘枃浠讹紙姣斿*.txt,*.ini,*.properties,*.java绛夌瓑锛夌紪鐮佽浆涓篣nicode缂栫爜銆備负浠涔堣佽繘琛岃浆鐮侊紝鍘熷洜鍦ㄤ簬绋嬪簭鐨勫浗闄呭寲銆
鐢ㄦ硶锛歯ative2ascii [-reverse] [-encoding 缂栫爜] [杈撳叆鏂囦欢 [杈撳嚭鏂囦欢]]
-[options]锛氳〃绀哄懡浠ゅ紑鍏筹紝鏈変袱涓閫夐」鍙渚涢夋嫨
-reverse锛氬皢Unicode缂栫爜杞涓烘湰鍦版垨鑰呮寚瀹氱紪鐮侊紝涓嶆寚瀹氱紪鐮佹儏鍐典笅锛屽皢杞涓烘湰鍦扮紪鐮併
-encoding encoding_name锛氳浆鎹涓烘寚瀹氱紪鐮侊紝encoding_name涓虹紪鐮佸悕绉般
[inputfile [outputfile]]
inputfile锛氳〃绀鸿緭鍏ユ枃浠跺叏鍚嶃
outputfile锛氳緭鍑烘枃浠跺悕銆傚傛灉缂哄皯姝ゅ弬鏁帮紝灏嗚緭鍑哄埌鎺у埗鍙
native2ascii鍛戒护鐨勭敤娉曪細
鍙鏈変竴绉嶇被鍨嬬紪鐮,鍙浠ヨ存枃鏈鏂囦欢缂栫爜鍜屾枃鏈鍐呭圭紪鐮佹寚鐨勬槸鍚屼竴涓鎰忔濄
寤鸿鐞嗚В鎴愭枃鏈鏂囦欢缂栫爜锛堢湅绗鍥涳級锛
缁撹猴細
1.杩欓噷璇寸殑16杩涘埗鐨勫瓧绗︽槸鏈鍦扮紪鐮佺殑瀛楃︾殑16杩涘埗瀛楃﹁〃绀恒
2.utf-8缂栫爜(鏈夋湰鍦板瓧绗)鍜孉NSI缂栫爜(鏈夋湰鍦板瓧绗)鐨勬枃浠惰浆鎴怉NSI缂栫爜鐨勬湰鍦板瓧绗︾殑16杩涘埗瀛楃﹁〃绀烘槸涓鏍风殑銆
3.utf-8缂栫爜(鏈夋湰鍦板瓧绗)鐨勬枃浠惰佽浆鎴怉NSI缂栫爜鐨(鏈鍦板瓧绗)鐨勬枃浠,瑕佸厛杞鎴怉NSI缂栫爜鐨16杩涘埗瀛楃︽枃浠,涔嬪悗鍐嶈浆鎴怉NSI缂栫爜鐨勬湰鍦板瓧绗︾殑鏂囦欢銆
4.鍓嶆彁鏄杩欎釜16杩涘埗鐨勫瓧绗﹀繀椤讳唬琛ㄤ竴涓鏈鍦板瓧绗.
鐤戦棶锛氶毦閬撴病鏈夎浆鎹utf-8缂栫爜鐨勬湰鍦板瓧绗︽枃浠惰浆涓簎tf-8缂栫爜鐨16杩涘埗瀛楃﹁〃绀虹殑鏂规硶?!瀹冨拰ANSI缂栫爜琛ㄧず鐨
16杩涘埗涓鏍峰悧?
涓銆佹妸ANSI缂栫爜鐨勬湰鍦板瓧绗︽枃浠惰浆鎴怉NSI缂栫爜鐨16杩涘埗鏂囦欢鍐嶈浆鍥炴潵銆
涓ゆヨ蛋锛
1.native2ascii -encoding gbk [ANSI缂栫爜鏂囦欢,鏄剧ずANSI鏈鍦板瓧绗] [ANSI缂栫爜鏂囦欢,鍗虫樉绀篈NSI鏈鍦扮紪鐮佸瓧绗︾殑鍗佸叚杩涘埗瀛楃]
2.native2ascii -reverse [ANSI缂栫爜鏂囦欢,鍗虫樉绀篈NSI鏈鍦扮紪鐮佸瓧绗︾殑鍗佸叚杩涘埗瀛楃] [ANSI缂栫爜鏂囦欢,鍗矨NSI鏈鍦板瓧绗]
浜屻佹妸ANSI缂栫爜鐨勬湰鍦板瓧绗(鎴16杩涘埗瀛楃)鏂囦欢杞鎴恥tf-8缂栫爜鐨勬湰鍦板瓧绗︽枃浠躲
native2ascii -reverse -encoding utf-8 [ANSI缂栫爜鏂囦欢,鍗矨NSI鏈鍦板瓧绗] [UTF-8缂栫爜鏂囦欢]
native2ascii -reverse -encoding utf-8 [ANSI缂栫爜鏂囦欢,鍗虫樉绀篈NSI鏈鍦扮紪鐮佸瓧绗︾殑鍗佸叚杩涘埗瀛楃] [UTF-8缂栫爜鏂囦欢]
涓夈佹妸utf缂栫爜鐨勬枃浠(鏄剧ず鏈鍦板瓧绗),杞鎴怉NSI缂栫爜鐨勬枃浠躲
涓ゆヨ蛋锛
1.鍏堣浆鎴怉NSI缂栫爜鐨勫崄鍏杩涘埗瀛楃︽枃浠
native2ascii -encoding utf-8 [UTF-8缂栫爜鏂囦欢] [ANSI缂栫爜鏂囦欢,鍗虫樉绀篈NSI鏈鍦扮紪鐮佸瓧绗︾殑鍗佸叚杩涘埗瀛楃]
2.鍐嶈浆鎴怉NSI缂栫爜鐨勬湰鍦板瓧绗︽枃浠躲
native2ascii -reverse [ANSI缂栫爜鏂囦欢,鍗虫樉绀篈NSI鏈鍦扮紪鐮佸瓧绗︾殑鍗佸叚杩涘埗瀛楃] [ANSI缂栫爜鏂囦欢,鍗矨NSI鏈鍦板瓧绗]
鍥涖佸傛灉鏄痷tf缂栫爜鐨勬枃浠,鏈夋湰鍦板瓧绗︾殑16杩涘埗鐨勮瘽锛屾兂杞鎴怉NSI缂栫爜鐨勬湰鍦板瓧绗﹁〃绀恒
鐢╪ative2ascii鐨勮瘽鏄涓嶈岀殑锛
鍙鑳界敤璁颁簨鏈鎶婃枃浠剁紪鐮佺被鍨嬪彟瀛樹负ANSI缂栫爜鐨16杩涘埗鐨勬枃浠讹紝涔嬪悗鎵ц岀涓姝ワ紟
杩欎釜澶楹荤儲浜嗭紝鑳戒笉鐢ㄦ椂灏变笉瑕佺敤
⑺ 如何把properties中的所有unicode编码转为汉字
在命令行界面用native2ascii工具
1.将汉字转为Unicode:
C:\Program Files\Java\jdk1.5.0_04\bin>native2ascii
测试
\u6d4b\u8bd5
2.将Unicode转换为汉字:
C:\Program Files\Java\jdk1.5.0_04\bin>native2ascii -reverse
\u6d4b\u8bd5
测试
java 自带的一个native2ascii.exe是一个很好的转码工具,在bin目录下。如果你的properties中有汉字,需要转成unicode . 则把含有汉字的properties拷贝到bin 目录下, 然后在cmd里面进入bin目录,输入:native2ascii -encoding utf-8 Language-ext_zh_CN.properties.native Language-ext_zh_CN.properties就ok了。Language-ext_zh_CN.properties是转码后的文件。
在做Java开发的时候,常常会出现一些乱码,或者无法正确识别或读取的文件,比如常见的validator验 证用的消息资源(properties)文件就需要进行Unicode重新编码。原因是java默认的编码方式为Unicode,而我们的计算机系统编码 常常是GBK等编码。需要将系统的编码转换为java正确识别的编码问题就解决了。
1、native2ascii简介:native2ascii 是sun java sdk提供的一个工具。用来将别的文本类文件(比如*.txt,*.ini,*.properties,*.java等等)编码转为Unicode编码。 为什么要进行转码,原因在于程序的国际化。Unicode编码的定义:Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每 种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。随着计算 机工作能力的增强,Unicode也在面世以来的十多年里得到普及。(声明:Unicode编码定义来自互联网)。
2、获取native2ascii:安装了jdk后,假如你是在windows上安装,那么在jdk的安装目录下,会有一个bin目录,其中native2ascii.exe正是。
3、native2ascii的命令行的命名格式:
native2ascii -[options] [inputfile [outputfile]]
说明:
-[options]:表示命令开关,有两个选项可供选择
-reverse:将Unicode编码转为本地或者指定编码,不指定编码情况下,将转为本地编码。
-encoding encoding_name:转换为指定编码,encoding_name为编码名称。
[inputfile [outputfile]]
inputfile:表示输入文件全名。
outputfile:输出文件名。如果缺少此参数,将输出到控制台。
4、最佳实践:首先将JDK的bin目录加入系统变量path。在盘下建立一个test目录,在test目录里建立一个zh.txt文件,文件内容为:“熔岩”,打开“命令行提示符”,并进入C:\test目录下。下面就可以按照说明一步一步来操作,注意观察其中编码的变化。
A:将zh.txt转换为Unicode编码,输出文件到u.txt
native2ascii zh.txt u.txt
打开u.txt,内容为“\u7194\u5ca9”。
B:将zh.txt转换为Unicode编码,输出到控制台
C:\test>native2ascii zh.txt
\u7194\u5ca9
可以看到,控制台输出了“\u7194\u5ca9”。
C:将zh.txt转换为ISO8859-1编码,输出文件到i.txt
native2ascii -encoding ISO8859-1 zh.txt i.txt
打开i.txt文件,内容为“\u00c8\u00db\u00d1\u00d2”。
D:将u.txt转换为本地编码,输出到文件u_nv.txt
native2ascii -reverse u.txt u_nv.txt
打开u_nv.txt文件,内容为“熔岩”。
E:将u.txt转换为本地编码,输出到控制台
C:\test>native2ascii -reverse u.txt
熔岩
可以看到,控制台输出了“熔岩”。
F:将i.txt转换为本地编码,输出到i_nv.txt
native2ascii -reverse i.txt i_nv.txt
打开i_nv.txt文件,内容为“\u00c8\u00db\u00d1\u00d2”。发现转码前后完全一样的。也就是说,等于没有转,或者说思想糊涂,对命名没有理解。。
G:将i.txt转换为GBK编码,输出到i_gbk.txt
native2ascii -reverse -encoding GBK i.txt i_gbk.txt
打开i_gbk.txt文件,内容为“\u00c8\u00db\u00d1\u00d2”。发现转码前后完全一样的。也就是说,等于没有转,或者说思想糊涂,对命名没有理解。
H:将u_nv.txt转码到本地编码GBK,输出到控制台
C:\test>native2ascii -reverse -encoding ISO8859-1 i.txt
熔岩
从这个结果看,目标达到到了,编码i.txt为ISO8859-1,转为本地编码后内容为“熔岩”。从这里应该意识到,native2ascii -reverse命令中-encoding指定的编码为源文件的编码格式。而在native2ascii 命令中-encoding指定的编码为(生成的)目标文件的编码格式。这一点非常的重要!切记!!
继续探索,新建文件12a.txt,内容“12axyz”。看看纯字母数字的编码又如何。
I:将纯字母数字的文本文件12a.txt转换为Unicode编码
native2ascii 12a.txt 12a_nv.txt
打开12a_nv.txt文件,内容为“12axyz”。
继续测试,转为ISO8859-1编码看看
C:\test>native2ascii -encoding ISO8859-1 12a.txt
12axyz
结果还是没有转码。
从结果可以得出结论:对于纯数字和字母的文本类型件,转码前后的内容是一样的。
⑻ java怎么把汉字转化成unicode编码
中文转换成Unicode编码和Unicode编码转换成中文
importjava.util.Properties;
publicclassTest{
voidmain(String[]args){
Strings="简介";
Stringtt=gbEncoding(s);//Stringtt1="你好";
System.out.println(decodeUnicode("\u7b80\u4ecb"));//System.out.println(decodeUnicode(tt1));
System.out.println(HTMLDecoder.decode("中国"));
Strings1="u7b80u4ecb";
System.out.println(s.indexOf("\"));
}
publicstaticStringgbEncoding(finalStringgbString){
char[]utfBytes=gbString.toCharArray();
StringunicodeBytes="";
for(intbyteIndex=0;byteIndex<utfBytes.length;byteIndex++){
StringhexB=Integer.toHexString(utfBytes[byteIndex]);
if(hexB.length()<=2){
hexB="00"+hexB;
}
unicodeBytes=unicodeBytes+"\u"+hexB;
}
System.out.println("unicodeBytesis:"+unicodeBytes);
returnunicodeBytes;}
(finalStringdataStr){
intstart=0;
intend=0;
finalStringBufferbuffer=newStringBuffer();
while(start>-1){
end=dataStr.indexOf("\u",start+2);
StringcharStr="";
if(end==-1){
charStr=dataStr.substring(start+2,dataStr.length());
}else{
charStr=dataStr.substring(start+2,end);
}
charletter=(char)Integer.parseInt(charStr,16);//16进制parse整形字符串。
buffer.append(newCharacter(letter).toString());
start=end;
}
returnbuffer.toString();
}}
}
}
}