java不同编码之间进行转换,都需要使用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");
System.out.println("utf-8 编码:" + xmlUTF8) ;
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// return to String Formed
return xmlUTF8;
扩展资料:
UTF-8编码规则:
如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的字节数,其余各字节均以10开头。
实际表示ASCII字符的UNICODE字符,将会编码成1个字节,并且UTF-8表示与ASCII字符表示是一样的。所有其他的UNICODE字符转化成UTF-8将需要至少2个字节。每个字节由一个换码序列开始。第一个字节由唯一的换码序列,由n位连续的1加一位0组成,首字节连续的1的个数表示字符编码所需的字节数。
Unicode转换为UTF-8时,可以将Unicode二进制从低位往高位取出二进制数字,每次取6位,如上述的二进制就可以分别取出为如下示例所示的格式,前面按格式填补,不足8位用0填补。
参考资料来源:百度百科:UTF-8
第一步:问题思想。
1、字符串需要转utf-8的原因一般都是因为字符串中文的乱码问题
2、这种乱码问题一般出现在前端的get提交中较多。
3、在servlet重定向传参数时也会出现中文乱码的问题。
2
/5
第二步:新建一个javaweb项目。
打开myeclipse file --》new--》web project
具体操作如下图所示:
3
/5
第三步:配置servlet。
1、编写servlet类
2、在web.xml中配置请求
4
/5
第三步:测试乱码问题。
1、打开页面输入汉字请求servlet
2、后台打印输入都是?
5
/5
第四步:问题定位解决
1、前台传输的时候默认将中文按ISO-8859-1进行编码进行编码导致后天接收失败
2、解决:借助于byte字节和字符串的转换解决。
2.1:思路:先将前台数据按照其传输的编码转为字节码,然后再用utf-8转回字符串
2.2 代码如下所示
ublic void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String sex = request.getParameter("sex");
String[] bobby = request.getParameterValues("bobby");
System.out.println("性别 :"+new String(sex.getBytes("ISO-8859-1"),"UTF-8"));
for (int i = 1; i <= bobby.length; i++) {
System.out.println("爱好"+i+" :"+new String(bobby[i-1].getBytes("ISO-8859-1"),"UTF-8"));
}
}
3:测试功能
3.1:打开页面输入中文
3.2后天打印数据中文显示出来测试成功
注意事项
这种方法也可用在其它编码的情况如response重定向时传参现将其转为uft-8字节码(sex.getBytes("UTF-8")),接收时在转回来(new String(sex.getBytes("UTF-8"),"UTF-8")))
java字符串如何转码为utf-8问题解决办法就是:new String(字符串变量.getBytes(传输过程中的编码),"UTF-8"))
String str = "任意字符串";
str = new String(str.getBytes("gbk"),"utf-8");
备注说明:
str.getBytes("UTF-8"); 的意思是以UTF-8的编码取得字节
new String(XXX,"UTF-8"); 的意思是以UTF-8的编码生成字符串
String str = "string转为utf-8";
str = new String(str.getBytes("gbk"),"utf-8");
你说的是把字符串转码吧
new String("String".getBytes(),"UTF-8")