程序如下public static void main( String[] args ){
String c = "新年快乐" ;
try{
String cIso = new String( c.getBytes( "gbk" ) , "iso8859-1" ) ;
String cUtf = new String( c.getBytes( "gbk" ) , "utf-8" ) ;
System.out.println( "c:" + c + " cIso:" + cIso + " cUtf:" + cUtf ) ;
String cIsoc = new String( cIso.getBytes( "iso8859-1" ) , "gbk" ) ;
String cUtfc = new String( cUtf.getBytes( "utf-8" ) , "gbk" ) ;
System.out.println( "c:" + c + " cIsoc:" + cIsoc + " cUtfc:" + cUtfc ) ;
}
catch ( UnsupportedEncodingException e ){
}
}我运行的结果如下:c:新年快乐 cIso:???ê?ì?? cUtf:???????
c:新年快乐 cIsoc:新年快乐 cUtfc:锟斤拷锟斤拷锟斤拷锟?
注:我本地编译的字符集为 gbk
应该怎么解决,才能让 cUtfc 得到正确的结果?
String c = "新年快乐" ;
try{
String cIso = new String( c.getBytes( "gbk" ) , "iso8859-1" ) ;
String cUtf = new String( c.getBytes( "gbk" ) , "utf-8" ) ;
System.out.println( "c:" + c + " cIso:" + cIso + " cUtf:" + cUtf ) ;
String cIsoc = new String( cIso.getBytes( "iso8859-1" ) , "gbk" ) ;
String cUtfc = new String( cUtf.getBytes( "utf-8" ) , "gbk" ) ;
System.out.println( "c:" + c + " cIsoc:" + cIsoc + " cUtfc:" + cUtfc ) ;
}
catch ( UnsupportedEncodingException e ){
}
}我运行的结果如下:c:新年快乐 cIso:???ê?ì?? cUtf:???????
c:新年快乐 cIsoc:新年快乐 cUtfc:锟斤拷锟斤拷锟斤拷锟?
注:我本地编译的字符集为 gbk
应该怎么解决,才能让 cUtfc 得到正确的结果?
顺便接分。
str.getBytes( encoding1 ) , encoding1)
这句的意思,是将str从encoding1转换为encoding2
楼上的俺调调啊哇,2个星星啊。。
String c = "新年快乐" ;
try{
String cIso = new String( c.getBytes( "iso8859-1" ) ) ;
String cUtf = new String( c.getBytes( "utf-8" ) ) ;
System.out.println( "c:" + c + " cIso:" + cIso + " cUtf:" + cUtf ) ; String cIsoc = new String( cIso.getBytes( ) , "iso8859-1" ) ;
String cUtfc = new String( cUtf.getBytes( ) ,"utf-8" ) ;
//System.out.println(cUtfc);
System.out.println( "c:" + c + " cIsoc:" + cIsoc + " cUtfc:" + cUtfc ) ;
}
catch ( UnsupportedEncodingException e ){
}
}
运行结果:
c:新年快乐 cIso:???? cUtf:鏂板勾蹇箰
c:新年快乐 cIsoc:???? cUtfc:新年快乐
怎么解决?
输出的是根据你当前运行环境的默认的编码格式,编码过的,即系统又帮你转了一次
java -Dfile.encoding ...
java -Dfile.encoding=XXX ...
javac -encoding XXX ...
java -Dfile.encoding=XXX ...
用这2个命令,我都试了。。都不行了。。大家也可以试试奇怪啊。
public String ChineseStringToAscii(String s)
{
try
{
CharToByteConverter toByte = CharToByteConverter.getConverter("gb2312");
byte[] orig = toByte.convertAll(s.toCharArray());
char[] dest = new char[orig.length];
for (int i=0;i<orig.length;i++)
dest[i] = (char)(orig[i] & 0xFF);
return new String(dest);
}
catch (Exception e)
{
System.out.println(e);
return s;
}
}
/**Unicode转化成GB的源码*/
public String UnicodetoGB(String s)
{
StringBuffer sb = new StringBuffer();
boolean escape = false;
for(int i=0; i<s.length(); i++)
{
char c = s.charAt(i);
switch (c)
{
case '\\': escape = true; break;
case 'u':
case 'U':
if(escape)
{
try
{
sb.append((char)Integer.parseInt(s.substring(i+1,i+5),16));
escape = false;
}
catch(NumberFormatException e)
{
throw new IllegalArgumentException();
}
i += 4;
}
else
{
sb.append(c);
}
break;
default:sb.append(c); break;
}
}
return sb.toString();
}
/*ASCII转化为字符串*/
public String AsciiToChineseString(String s)
{
char[] orig = s.toCharArray();
byte[] dest = new byte[orig.length];
for (int i=0;i<orig.length;i++)
dest[i] = (byte)(orig[i]&0xFF);
try
{
ByteToCharConverter toChar = ByteToCharConverter.getConverter("gb2312");
return new String(toChar.convertAll(dest));
}
catch (Exception e)
{
System.out.println(e);
return s;
}
}
/**转换编码*/
public String toGBK(String str)
{
try
{
str=new String(str.getBytes("ISO-8859-1"),"GBK"); //using the ISO-8859-1 charset and change to GBK
}catch (Exception e) {}
return str;
} /**UTF8*/
public String toUtf8String(String src)
{
byte[] b = src.getBytes();//using the platform's default charset
char[] c = new char[b.length];
for(int i=0;i<b.length;i++)
{
c[i] = (char)(b[i]&0x00FF);
}
return new String(c);
} public String toASCII(String str)
{
try
{
str=new String(str.getBytes("GBK"),"ISO-8859-1"); //chang str from GBK to ISO
}catch (Exception e) {}
return str;
}
希望有所帮助............
String s="新年快乐";
String news=new String(s.getBytes(),"UTF8");
news=new String(news.getBytes("utf8"),"GBK");为什么news就复远不了了呢?