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);

}

}


本文标签: 编码 转换 文件 新建 弹出