java如何把string转为utf-8

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java如何把string转为utf-8相关的知识,希望对你有一定的参考价值。

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

参考技术A 第一步:问题思想。
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"))
参考技术B String str = "任意字符串";
str = new String(str.getBytes("gbk"),"utf-8");

备注说明:
str.getBytes("UTF-8"); 的意思是以UTF-8的编码取得字节
new String(XXX,"UTF-8"); 的意思是以UTF-8的编码生成字符串
参考技术C String str = "string转为utf-8";

str = new String(str.getBytes("gbk"),"utf-8");

本回答被提问者和网友采纳
参考技术D 你说的是把字符串转码吧
new String("String".getBytes(),"UTF-8")

java 中double如何转为string

基础类型转换为String类型可以有一下集中方法,

1.使用字符串拼接的方法,代码实例如下:

System.out.println((a+"") instanceof String);

这样就可以直接转为String类型

2. 使用String.valueOf方法,转为String类型

String.valueOf(a);

测试代码和结果如下

资料拓展:

如果这2种类型是兼容的,那么Java 将自动地进行转换。

如果这2种类型是兼容的,那么Java 将自动地进行转换。例如,把int 类型的值赋给long类型的变量,总是可行的。

然而,不是所有的类型都是兼容的。因此,不是所有的类型转换都是可以隐式实现的。例如,没有将double 型转换为byte 型的定义。

幸好,获得不兼容的类型之间的转换仍然是可能的。要达到这个目的,你必须使用一个强制类型转换,它能完成两个不兼容的类型之间的显式变换。让我们看看自动类型转换和强制类型转换。

参考资料:

百度百科-Java

参考技术A 由于double是基本类型,所以没有toString方法。
可以使用String.valueOf(double)方法,也可以用最笨的方法,就是直接+;
如:String str = ""+double;用空字符串加上数字就好了。本回答被提问者采纳
参考技术B toString()和String.valueOf()以及空字符串加法运算,这三种方法针对数值较小的Double类型没有问题,但是数值比较大的会输出科学计数法的结果;所以,为了规避bug,最好使用String.format()的方式。示例如下:
Double db = 26345548.00;
String s = db.toString(); // "2.6345548E7"
s = String.valueOf(db); // "2.6345548E7"
s = "" + db; // "2.6345548E7"
s = String.format("%.2f", db); // "26345548.00"
参考技术C toString?或者用String.valueOf 参考技术D 比如说double a = 1.2;
你可以直接String str;
让str = ""+a;
str就变成"1.2"了

以上是关于java如何把string转为utf-8的主要内容,如果未能解决你的问题,请参考以下文章

java 中double如何转为string

JAVA中怎么把int型数据转为BigInteger型数据

java如何把时间格式转为毫秒

Java中如何将gbk装换为ansi

Java中如何将gbk装换为ansi

java怎样将string转为对象