本文共 4216 字,大约阅读时间需要 14 分钟。
1.手机显示中文:GBK,UTF-8正常,ISO-8859-1乱码。
2.写入内容到txt:UTF-8转GBK,直接stream.write(str.getBytes(StrCharset.GBK));无效。
发现前面多了个问号?,直接删。暂时这样处理了。
if(StrCharset.getEncoding(str).equals(StrCharset.ISO_8859_1)) stream.write(str.getBytes(StrCharset.ISO_8859_1)); else if(StrCharset.getEncoding(str).equals(StrCharset.UTF_8)) { try{ byte[] b=str.getBytes(StrCharset.GBK); stream.write(b,1,b.length-1); //stream.write(new String(str.getBytes("GBK"),"GBK").getBytes()); }catch(Exception e) { stream.write(str.getBytes(StrCharset.GBK)); } } else stream.write(str.getBytes(StrCharset.GBK));
import java.nio.charset.Charset; public class Encoding{ public static String getEncoding(String str) { String encode; encode = "UTF-16"; try { if(str.equals(new String(str.getBytes(), encode))) { return encode; } } catch(Exception ex) {} encode = "ASCII"; try { if(str.equals(new String(str.getBytes(), encode))) { return "字符串<< " + str + " >>中仅由数字和英文字母组成,无法识别其编码格式"; } } catch(Exception ex) {} encode = "ISO-8859-1"; try { if(str.equals(new String(str.getBytes(), encode))) { return encode; } } catch(Exception ex) {} encode = "GB2312"; try { if(str.equals(new String(str.getBytes(), encode))) { return encode; } } catch(Exception ex) {} encode = "UTF-8"; try { if(str.equals(new String(str.getBytes(), encode))) { return encode; } } catch(Exception ex) {} /* *......待完善 */ return "未识别编码格式"; } public static void main(String[] args) { //获取系统默认编码 System.out.println("系统默认编码:" + System.getProperty("file.encoding")); //查询结果GBK //系统默认字符编码 System.out.println("系统默认字符编码:" + Charset.defaultCharset()); //查询结果GBK //操作系统用户使用的语言 System.out.println("系统默认语言:" + System.getProperty("user.language")); //查询结果zh System.out.println(); String s1 = "hi, nice to meet you!"; String s2 = "hi, 我来了!"; System.out.println(getEncoding(s1)); System.out.println(getEncoding(s2)); }}
// java获取字符串编码格式 public static String getEncoding(String str) { String encode = "GB2312"; try { if (str.equals(new String(str.getBytes(encode), encode))) { // 判断是不是GB2312 String s = encode; return s; // 是的话,返回“GB2312“,以下代码同理 } } catch (Exception exception) { } encode = "ISO-8859-1"; try { if (str.equals(new String(str.getBytes(encode), encode))) { // 判断是不是ISO-8859-1 String s1 = encode; return s1; } } catch (Exception exception1) { } encode = "UTF-8"; try { if (str.equals(new String(str.getBytes(encode), encode))) { // 判断是不是UTF-8 String s2 = encode; return s2; } } catch (Exception exception2) { } encode = "GBK"; try { if (str.equals(new String(str.getBytes(encode), encode))) { // 判断是不是GBK String s3 = encode; return s3; } } catch (Exception exception3) { } return "unknown"; // 如果都不是,说明输入的内容不属于常见的编码格式。 }
各种编码都显示出去看看
System.out.println("中文"); System.out.println("中文".getBytes()); System.out.println("中文".getBytes("GB2312")); System.out.println("中文".getBytes("ISO8859_1")); System.out.println(new String("中文".getBytes())); System.out.println(new String("中文".getBytes(), "GB2312")); System.out.println(new String("中文".getBytes(), "ISO8859_1")); System.out.println(new String("中文".getBytes("GB2312"))); System.out.println(new String("中文".getBytes("GB2312"), "GB2312")); System.out.println(new String("中文".getBytes("GB2312"), "ISO8859_1")); System.out.println(new String("中文".getBytes("ISO8859_1"))); System.out.println(new String("中文".getBytes("ISO8859_1"), "GB2312")); System.out.println(new String("中文".getBytes("ISO8859_1"), "ISO8859_1"));
//判断当前字符串的编码格式if(destination.equals(new String(destination.getBytes("iso8859-1"), "iso8859-1"))){ destination=new String(destination.getBytes("iso8859-1"),"utf-8");}
转载地址:http://tcaab.baihongyu.com/