js和java中字符和unicode编码的转化

时间:2021-06-26 15:43:59

一般来说,良好的编程习惯要求在代码里尽量不出现中文,一个是国际化问题,即同一份代码可能要满足不同语言的显示,还一个就是可能产生乱码问题,不同的程序员用不同的IDE导入这份代码可能使用了不同的默认编码。

然而有些场景是必须保持中文的,比如读取某个带样式文本的字体,这个字体的名字可能就叫“宋体”或者“微软雅黑”,用国际化文件的方式解决显然是不合适的,这时候一个解决方法就是转化Unicode码。

字母a的unicode码是10进制的97,或者16进制的61,

汉字一的unicode码是19968,或者16进制的4e00

JavaScript中,

获取字符的unicode码:

"a".charCodeAt(0) 返回97

"一".charCodeAt(0) 返回19968

把编码转化成字符:

String.fromCharCode(97);  返回"a"   或者直接用'\u0061'

String.fromCharCode(19968); 返回"一"    或者直接用"\u4e00"


Java中,

字符转化成编码:

强制转换把char转化成int

System.out.println((int)"一二三".charAt(0));打印19968

编码转化成字符:

强制转换把int转成char

System.out.println(((char)19968) + "" + ((char)97));打印"一a"

或者直接用"\u4e00\u0061"   结果为"一a"


注意获取字符串编码的时候编码如果不是utf8需要做编码转化,比如:

new String("一二三".getBytes(), "GBK");