admin 管理员组文章数量: 887021
2023年12月23日发(作者:shell out造句)
Java中文Unicode中文转换
转换背景:
把中文转换成Unicode编码再直接输出,程序解析XML,properties,以及JS打印提示信息后再把Unicode编码转回中文就没有问题了。
提供两种方法把中文转换成Unicode编码:
第一种办法:Eclipse中JS转换法
1. web项目中随便新建一个 *.js文件,将文件的编码属性设置为utf8 (右击文件从弹出菜单中选择“properties”在弹出的属性对话框中设置“Text file encoding”选项)
2. 打开新建的*.js文件,输入: “要转换的汉字”.
3. 按下Ctrl+Shift+F 或右键点击文件内容从弹出菜单中选择“Format
Document”选型,效果出来了。
总结:必须将汉字放到””中间,否则不转换.
^_^
第二种办法:JAVA程序实现法
public class CharacterSetToolkit {
/** Creates a new instance of CharacterSetToolkit */
public CharacterSetToolkit() {
}
private static final char[] hexDigit = {
'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'
};
private static char toHex(int nibble) {
return hexDigit[(nibble & 0xF)];
}
/**
* 将字符串编码成 Unicode 。
* @param theString 待转换成Unicode编码的字符串。
* @param escapeSpace 是否忽略空格。
* @return 返回转换后Unicode编码的字符串。
*/
public static String toUnicode(String theString, boolean escapeSpace)
{
int len = ();
int bufLen = len * 2;
if (bufLen < 0) {
bufLen = _VALUE;
}
StringBuffer outBuffer = new StringBuffer(bufLen);
for(int x=0; x char aChar = (x); // Handle common case first, selecting largest block that // avoids the specials below if ((aChar > 61) && (aChar < 127)) { if (aChar == '') { (''); (''); continue; } (aChar); continue; } switch(aChar) { case ' ': if (x == 0 || escapeSpace) (''); (' '); break; case 't':(''); ('t'); break; case 'n':(''); ('n'); break; case 'r':(''); ('r'); break; case 'f':(''); ('f'); break; case '=': // Fall through case ':': // Fall through case '#': // Fall through case '!': (''); (aChar); break; default: if ((aChar < 0x0020) || (aChar > 0x007e)) { (''); ('u'); (toHex((aChar >> 12) & 0xF)); (toHex((aChar >> 8) & 0xF)); (toHex((aChar >> 4) & 0xF)); (toHex( aChar & 0xF)); } else { (aChar); } } } return ng(); } /** * 从 Unicode 码转换成编码前的特殊字符串。 * @param in Unicode编码的字符数组。 * @param off 转换的起始偏移量。 * @param len 转换的字符长度。 * @param convtBuf 转换的缓存字符数组。 * @return 完成转换,返回编码前的特殊字符串。 */ public String fromUnicode(char[] in, int off, int len, char[] convtBuf) { if ( < len) { int newLen = len * 2; if (newLen < 0) { newLen = _VALUE; } convtBuf = new char[newLen]; } char aChar; char[] out = convtBuf; int outLen = 0; int end = off + len; while (off < end) { aChar = in[off++]; if (aChar == '') { aChar = in[off++]; if (aChar == 'u') { // Read the xxxx int value = 0; for (int i = 0; i < 4; i++) { aChar = in[off++]; switch (aChar) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': value = (value << 4) + aChar - '0'; break; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': value = (value << 4) + 10 + aChar - 'a'; break; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': value = (value << 4) + 10 + aChar - 'A'; break; default: throw new IllegalArgumentException( "Malformed uxxxx encoding."); } } out[outLen++] = (char) value; } else { if (aChar == 't') { aChar = 't'; } else if (aChar == 'r') { aChar = 'r'; } else if (aChar == 'n') { aChar = 'n'; } else if (aChar == 'f') { aChar = 'f'; } out[outLen++] = aChar; } } else { out[outLen++] = (char) aChar; } } return new String(out, 0, outLen); } public static void main(String arg[]){ CharacterSetToolkit cst = new CharacterSetToolkit(); String unicode = ode("机构号只能输入数字", true); n(unicode); } }
版权声明:本文标题:java中文转换Unicode编码 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1703338815h447521.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论