⑴ java中编码与解码分别指什么
java中编码:URLEncoder.encode(strUri,"utf-8");
java中解码码:URLDecoder.decode(strUri,"utf-8");
⑵ java判断文件编码格式 怎么判断编码格式
UTF-8编码的文本文档,有的带有BOM (Byte Order Mark, 字节序标志),即0xEF, 0xBB, 0xBF,有的没有。Windows下的txt文本编辑器在保存UTF-8格式的文本文档时会自动添加BOM到文件头。在判断这类文档时,可以根据文档的前3个字节来进行判断。然而BOM不是必需的,而且也不是推荐的。对不希望UTF-8文档带有BOM的程序会带来兼容性问题,例如Java编译器在编译带有BOM的UTF-8源文件时就会出错。而且BOM去掉了UTF-8一个期望的特性,即是在文本全部是ASCII字符时UTF-8是和ASCII一致的,即UTF-8向下兼容ASCII。
在具体判断时,如果文档不带有BOM,就无法根据BOM做出判断,而且IsTextUnicode API也无法对UTF-8编码的Unicode字符串做出判断。那在编程判断时就要根据UTF-8字符编码的规律进行判断了。
UTF-8是一种多字节编码的字符集,表示一个Unicode字符时,它可以是1个至多个字节,在表示上有规律:
1字节:0xxxxxxx
2字节:110xxxxx 10xxxxxx
3字节:1110xxxx 10xxxxxx 10xxxxxx
4字节:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
这样就可以根据上面的特征对字符串进行遍历来判断一个字符串是不是UTF-8编码了。
举例代码:
java.io.File f=new java.io.File("待判定的文本文件名");
try{
java.io.InputStream ios=new java.io.FileInputStream(f);
byte[] b=new byte[3];
ios.read(b);
ios.close();
if(b[0]==-17&&b[1]==-69&&b[2]==-65)
System.out.println(f.getName()+"编码为UTF-8");
else System.out.println(f.getName()+"可能是GBK");
}catch(Exception e){
e.printStackTrace();
}
⑶ Java鍐椤叆TXT鏂囦欢镞朵缭瀛树负Unicode锛屼絾镓揿紑镞跺欐樉绀虹紪镰佷负Unicode big endian锛屾垜鍙闇瑕佺殑鏄疷nicode缂栫爜锛
杩囧幓镄勬墍璋"Unicode缂栫爜"鍏跺疄鏄鎸嘦CS-16缂栫爜锛寀nicode鏄鎸囧瓧绗﹂泦锛岃繛gb18030閮芥槸unicode缂栫爜銆傝屸淯nicode big endian 钬濇槸UTF-16BE缂栫爜锛屼篃灞炰簬unicode缂栫爜.
鍙浠ユ敼鎴
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(file,true),"UTF-16LE");//搴旇ュ氨鏄浣犺佺殑涓崭弗璋ㄧ殑"unicode"缂栫爜
⑷ java 写入txt文件的中文乱码是怎么回事
原因是写入时使用的字符编码和期望的不一致导致的,因为JVM虚拟机启动时会因不同的参数使用不同的缺省字符编码。
解决办法:
如果你期望写到文件中的汉字是 GBK编码,可以:
1、写文件时,将字符串准换成 GBK编码的byte[], 如: myios.write( "汉字".getBytes("GBK"));
2、java 虚拟机启动时,增加 -DFile.encode=GBK 选项。
⑸ java 写入txt文件的中文乱码问题
原因是写入时使用的字符编码和期望的不一致导致的,因为JVM虚拟机启动时会因不同的参数使用不同的缺省字符编码。
解决办法:
如果你期望写到文件中的汉字是 GBK编码,可以:
1、写文件时,将字符串准换成 GBK编码的byte[], 如: myios.write( "汉字".getBytes("GBK"));
2、java 虚拟机启动时,增加 -DFile.encode=GBK 选项。