java中文乱码,能说下string.getBytes()和new String()转码是,具体点 。1、Java中,【String.getBytes(String decode)】的方法 , 会根据指定的decode , 编码返回某字符串在该编码下的byte数组表示,例如:
byte[] b_gbk = "中".getBytes("GBK");
byte[] b_utf8 = "中".getBytes("UTF-8");
byte[] b_iso88591 = "中".getBytes("ISO8859-1")
上面三行代码表示:分别返回“中”这个汉字在GBK、UTF-8和ISO8859-1编码下的byte数组表示,此时b_gbk的长度为2,b_utf8的长度为3,b_iso88591的长度为1 。
2、而通过【new String(byte[], decode)】的方式来还原这个“中”字时,实际是使用decode指定的编码来将byte[ ]解析成字符串,例如:
String s_gbk = new String(b_gbk,"GBK");
String s_utf8 = new String(b_utf8,"UTF-8");
String s_iso88591 = new String(b_iso88591,"ISO8859-1");
s_gbk和s_utf8都是“中”,而只有s_iso88591是一个不认识 的字符,因为ISO8859-1编码的编码表中,根本就没有包含汉字字符,当然也就无法通过"中".getBytes("ISO8859-1") 。
因此,通过【String.getBytes(String decode)】方法来得到byte[ ]时,要确定decode的编码表中确实存在String表示的码值,这样得到的byte[ ]数组才能正确被还原 。
扩展资料
java中文编码避免乱码
1、为了让中文字符适应某些特殊要求(如http header头要求其内容必须为iso8859-1编码),可能会通过将中文字符按照字节方式来编码的情况 , 比如:
String s_iso88591 = new String("中".getBytes("UTF-8"),"ISO8859-1")
2、上述例子中的s_iso8859-1字符串实际是三个在 ISO8859-1中的字符 , 在将这些字符传递到目的地后,目的地程序再通过相反的方式:
String s_utf8 = new String(s_iso88591.getBytes("ISO8859-1"),"UTF-8")
来得到正确的中文汉字 。这样就既保证了遵守协 议规定、也支持中文 。
3、String.getBytes(String decode)方法会根据指定的decode编码返回某字符串在该编码下的byte数组表示这里是encode , not decode,从字符串到字节数组是编码的过程 , 从字节数组到字符串(即 new String(byte[] , charsetname))才是解码的过程 。
参考资料:百度百科-UTF-8
JAVA程序,从键盘输入汉字 , 并将汉子转换为相应的unicode编码,怎么写啊上代码java中文转码代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入汉字java中文转码代码:");
String input = sc.nextLine();
if (input.length() == 0) {
System.out.println("输入错误");
return;
}
System.out.println("汉字转unicode结果:");
char[] chars = input.toCharArray();
for (int i = 0; ichars.length; i++) {
String unicode = Integer.toHexString(chars[i]);
if (unicode.length() = 2) {
// 不足四位前面加0补齐
unicode = "00" + unicode;
}
unicode = "\\u" + unicode;
System.out.println(chars[i] + ": " + unicode);
}
}
}
java如何把string转为utf-8java不同编码之间进行转换,都需要使用unicode作为中转 。
String str = "任意字符串";
str = new String(str.getBytes("gbk"),"utf-8");
备注说明:
str.getBytes("UTF-8"); 意思是以UTF-8的编码取得字节
new String(XXX,"UTF-8"); 意思是以UTF-8的编码生成字符串
举例:
public static String getUTF8XMLString(String xml) {
// A StringBuffer Object
StringBuffer sb = new StringBuffer();
sb.append(xml);
String xmString = "";
String xmlUTF8="";
try {
xmString = new String(sb.toString().getBytes("UTF-8"));
xmlUTF8 = URLEncoder.encode(xmString, "UTF-8");
推荐阅读
- 簪子制作直播教程,簪子制作直播教程视频
- dump文件怎么导入oracle,dump文件导入oracle数据库
- 马自达如何营销汽车,马自达营销方案
- 迷你世界主播全部直播吗,迷你世界主播有几个人
- mysql怎么看最大连接 mysql查看当前最大连接数
- 视频号挂了商品怎么不显示,视频号怎么挂商品链接
- 网易游戏cg竞速,网易竞技端游
- 什么电视机能用网络电视,什么电视可以用wifi
- R语言GO功能图 r语言 gsea