java string乱码问题

Posted

tags:

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

String sql1= " '"+id+"'";
刚刚不小心点了另一个最佳答案,还是没解决,大神给力啊
id是char数组类型,值为3703731197270270

String sql= " '"+id+"'";

sql值为 '[C@1b8ee96

因为要使用mysql,所以数据库的值是错的

有大神说是输出的object类型,怎么解决?

看了你的描述:

转换后成 '[C@1b8ee96'

这个不是乱码,是Java的hashCode值,即对象的内存地址,产生原因是:

String sql1= " '"+id+"'";  做字符串拼接时,id是一个对象

java在做字符串拼接时,会调用toString方法,而toString默认返回的是hashcode


id的是个数组,什么类型的,包括String sql= " '"+id+"'"; 你想拼成一个怎样的sql语句


int [] a = 1,2,3,4;

System.out.println(Arrays.toString(a));   // 数组变字符串

供你参考,因为要拼sql需要额外处理


String ss = "3703731197270270";
char[] id = ss.toCharArray();
String idStr = Arrays.toString(id);
idStr = idStr.substring(1).substring(0, idStr.length() - 2);
String sql = " '" + idStr + "'";
System.out.println(sql);
String sql1 = "insert into weibo value ('"  +sql +"')"
System.out.println(sql1);

看看合不合适

参考技术A


选择GBK或者UTF-8,试一试

希望采纳!

追问

还是那样。。
我准备用mysql,
语句String sql1= " '"+id+"'";
id原来是
3703731197270270
转换后成 '[C@1b8ee96',
刚刚有大神说是变成了object类型,不知道怎么解决,数据库也是乱码

追答

编写java web的程序,不可避免都要处理编码问题,最常见的问题就是中文乱码
大概的思路就是重新编码为gbk或者gb2312,分两种情况
一是get和post形式
二是AJax 形式
第一种:GET和POST,取决于你的页面编码,如果你的页面编码为iso8859_1
使用:String str= new String(req.getParameter("str").toString().getBytes("iso8859_1"), "GBK");
或者 String str= new String(req.getParameter("str").toString().getBytes("iso8859_1"), "GB2312");
但是,这里要注意,必须保证你的页面编码也是iso8859_1的,因为,上面的代码的意思是先将你的字符串变为iso8859_1字节流,
然后再转化为GBK编码,如果你页面传过来的编码是utf-8,那么按照上面的方法就会出现:???乱码
你页面是utf-8的,就要使用如下编码:
String str= new String(req.getParameter("str").toString().getBytes("utf-8"), "GBK");
或者 String str= new String(req.getParameter("str").toString().getBytes("utf-8"), "GB2312");
总之get post 原则很简单,页面什么编码就转化什么字节流转化编码

java URL请求乱码

我在电脑浏览器上输入后,在数据库能正常保存中文,但我在android的程序中同样用此字符串,数据库中就乱码,URL url = new URL("http://" + addrss + data); data与浏览器中一样,请大侠帮助分析一下,谢谢!!!

参考技术A 当你在url地址以get方式传输数据时须要用String
encode(String s, String enc)将汉字进行编码后传输,再在后台用decode(String s, String enc)解码回来就OK了。这两个方法都在java.net包下。看看API就知道了。
参考技术B URL在传输过程中,最好是urlecode一下 参考技术C 对请求参数的value做URLEncode.encode编码设置,或者服务端需要解码URLDecoder.decode本回答被提问者采纳

以上是关于java string乱码问题的主要内容,如果未能解决你的问题,请参考以下文章

java转码后局部乱码问题

java URL请求乱码

java读文件乱码问题

java入数据库Mysql乱码问题:

java中DataOutputStream 乱码

java中输入输出中文乱码,怎么办?