当前位置: 技术问答>java相关
UTF-8问题
来源: 互联网 发布时间:2015-04-28
本文导语: 问题简述:汉字字符串在gb2312和utf-8编码之间的转换,我是用了类似于gb2312和iso-8859-1编码转化的方法,结果对中文字符无效 参考以下例子程序: public class test { public static void main(String[] args) { toUTF8("abc...
问题简述:汉字字符串在gb2312和utf-8编码之间的转换,我是用了类似于gb2312和iso-8859-1编码转化的方法,结果对中文字符无效
参考以下例子程序:
public class test {
public static void main(String[] args) {
toUTF8("abc");
toUTF8("汉字");
}
static void toUTF8(String s){
System.out.println("Source string: "+s);
try{
s = new String(s.getBytes(), "UTF8");
byte[] bytes = s.getBytes("UTF8");
System.out.println("length: "+bytes.length);
}catch(java.io.UnsupportedEncodingException uee){
uee.printStackTrace();
}
}
}
输出:
Source string: abc
length: 3
Source string: 汉字
length: 0
我发现中文string从gb2312转化到utf-8后,成了一个空string
中文win2000+jb6,系统默认编码GBK
参考以下例子程序:
public class test {
public static void main(String[] args) {
toUTF8("abc");
toUTF8("汉字");
}
static void toUTF8(String s){
System.out.println("Source string: "+s);
try{
s = new String(s.getBytes(), "UTF8");
byte[] bytes = s.getBytes("UTF8");
System.out.println("length: "+bytes.length);
}catch(java.io.UnsupportedEncodingException uee){
uee.printStackTrace();
}
}
}
输出:
Source string: abc
length: 3
Source string: 汉字
length: 0
我发现中文string从gb2312转化到utf-8后,成了一个空string
中文win2000+jb6,系统默认编码GBK
|
try{
s = new String(s.getBytes(), "UTF8");
byte[] bytes = s.getBytes("UTF8");
System.out.println("length: "+bytes.length);
}catch(java.io.UnsupportedEncodingException uee){
uee.printStackTrace();
}
改为:
try{
s = new String(s.getBytes(), "GBK");
byte[] bytes = s.getBytes("UTF8");
System.out.println("length: "+bytes.length);
}catch(java.io.UnsupportedEncodingException uee){
uee.printStackTrace();
}
看看。
s = new String(s.getBytes(), "UTF8");
byte[] bytes = s.getBytes("UTF8");
System.out.println("length: "+bytes.length);
}catch(java.io.UnsupportedEncodingException uee){
uee.printStackTrace();
}
改为:
try{
s = new String(s.getBytes(), "GBK");
byte[] bytes = s.getBytes("UTF8");
System.out.println("length: "+bytes.length);
}catch(java.io.UnsupportedEncodingException uee){
uee.printStackTrace();
}
看看。
|
static void toUTF8(String s)
{
System.out.println("Source string: "+s);
try
{
byte[] bytes = s.getBytes("ISO-8859-1");
String strReturn = new String(bytes,"UTF-8");
System.out.println(strReturn);
System.out.println( "length: "+strReturn.length() );
}
catch(java.io.UnsupportedEncodingException uee)
{
uee.printStackTrace();
}
}
|
应该直接
byte[] bytes = s.getBytes("UTF8");
你多了一个NEW所以才这样,字符转换时不需要的。
长度这样是4。
byte[] bytes = s.getBytes("UTF8");
你多了一个NEW所以才这样,字符转换时不需要的。
长度这样是4。
|
public byte[] getBytes(String enc)
throws UnsupportedEncodingException
Convert this String into bytes according to the specified character encoding,
storing the result into a new byte array.
这个函数是将字符串按指定的编码方案编码,返回其编码
所以,想知道字符串的UTF8编码的话,可以使用getBytes("UTF8")
byte[] bytes = "中文".getBytes("UTF8");
System.out.println("length: "+bytes.length);
>>length: 6
throws UnsupportedEncodingException
Convert this String into bytes according to the specified character encoding,
storing the result into a new byte array.
这个函数是将字符串按指定的编码方案编码,返回其编码
所以,想知道字符串的UTF8编码的话,可以使用getBytes("UTF8")
byte[] bytes = "中文".getBytes("UTF8");
System.out.println("length: "+bytes.length);
>>length: 6