如何在java中获知操作系统正在使用的默认字符集
System.getProperties().list(System.out); 可以在控制台中打印出所有你想要的东西。
:简单判断是UTF-8或不是UTF-8,因为一般除了UTF-8之外就是GBK,所以就设置默认为GBK。
将byt数组变成一个String,0表示从第0个位置开始,Len表示数组长度。下面是API文档的介绍:String(byte[] bytes, int offset, int length)通过使用平台的默认字符集解码指定的 byte 子数组,构造一个新的 String。
java在不知道字符串的字符集的情况下如何判断它的字节长度
k应该是kb的简写。 1kb = 1024b b就是byte。字节。 一个英文字母是一个字节。 汉字好像是两个字节。一般 字符串有个length方法可以获取它的长度。
)方法获取字符串长度。String a=abcdefg//定义一个字符串 int len = a.length();//通过length获取字符串长度,这里等于7 length()该方法返回此字符串的长度。长度是等于Unicode代码单元中的字符串的数目。
在unicode下,字节数/2=字符串长度=字符个数,因为每个字符都是2个字节。
如果只是要数组的长度的话,那么任意的数组都有length属性,直接访问就可以了。如果想要字符串数组中所有字符的长度,就得循环了。
Java语言内部的char是使用unicode编码,UTF-16,所以都是两字节。getBytes后,实际上是转换成指定的编码字符集。不指定时,一般用本地字符集,通常是GBK、ACSII等,在这些字符集中,英文都是单字节的,所以会出现这样的问题。
关于java查询数据库字符集的问题
通过把未知编码字符串,用猜想的编码再解码,观察字符串是不是正确还原了。原理:假如目标编码没有数组中的字符,那么编码会破坏,无法还原。缺点:假如字符少,而正巧错误的猜想编码中有这种字节,就会出错。
,一般配置jdbc连接字符串的时候可以指定字符编码集,指定成和数据库的编码一致即可,这样用jdbc读出来的数据就是解码后的正常的数据。当然,不同的数据库产品具体看怎么办。
程序也需要修改,因为从jsp页面传过来的值是英文字符集的要把它转成你想要的字符集。
这种情况可能是由于Java程序在从数据库中获取数据时,使用了不恰当的数据类型或者操作导致的。
首先你要清楚乱码的原因,就是存储和读取的编码不一致导致的。
查询一下数据库,判断在数据库中的时候,是否是已经存在了乱码。在读取到Java的时候,你用SystemOut输出一下,判断这个时候,是否是乱码。写入到xml文件的时候,XML中是否是乱码。