批处理有什么办法处理unicode字符

批处理有什么办法处理unicode字符,第1张

unicode编码简而言之就是将每一个字符用16位2进制数标识。但是通常都用4位的16进制数标识。

例如:

1)中文字符串"你好"的unicode码为:\u60\u597d;

2)英文字符串"ab"的unicode码为:\u0061\u0062;

其中\u是标识unicode码用的,后面的4位16进制数则是对应字符的unicode码。

unicode码在J2EE项目中应用广泛,java对unicode码提供了很好的支持。例如国际化,则是unicode的经典运用。

那么unicode的编码规则具体是什么,如何用程序实现?

1、unicode编码规则

unicode码对每一个字符用4位16进制数表示。具体规则是:将一个字符(char)的高8位与低8位分别取出,转化为16进制数,

如果转化的16进制数的长度不足2位,则在其后补0,然后将高、低8位转成的16进制字符串拼接起来并在前面补上"\u" 即可。

2、转码程序

1)字符串转unicode

/

将字符串转成unicode

@param str 待转字符串

@return unicode字符串

/

public String convert(String str)

{

str = (str == null "" : str);

String tmp;

StringBuffer sb = new StringBuffer(1000);

char c;

int i, j;

sbsetLength(0);

for (i = 0; i < strlength(); i++)

{

c = strcharAt(i);

sbappend("\\u");

j = (c >>>8); //取出高8位

tmp = IntegertoHexString(j);

if (tmplength() == 1)

sbappend("0");

sbappend(tmp);

j = (c & 0xFF); //取出低8位

tmp = IntegertoHexString(j);

if (tmplength() == 1)

sbappend("0");

sbappend(tmp);

}

return (new String(sb));

}

2)unicode转成字符串,与上述过程反向 *** 作即可

/

将unicode 字符串

@param str 待转字符串

@return 普通字符串

/

public String revert(String str)

{

str = (str == null "" : str);

if (strindexOf("\\u") == -1)//如果不是unicode码则原样返回

return str;

StringBuffer sb = new StringBuffer(1000);

for (int i = 0; i < strlength() - 6;)

{

String strTemp = strsubstring(i, i + 6);

String value = strTempsubstring(2);

int c = 0;

for (int j = 0; j < valuelength(); j++)

{

char tempChar = valuecharAt(j);

int t = 0;

switch (tempChar)

{

case 'a':

t = 10;

break;

case 'b':

t = 11;

break;

case 'c':

t = 12;

break;

case 'd':

t = 13;

break;

case 'e':

t = 14;

break;

case 'f':

t = 15;

break;

default:

t = tempChar - 48;

break;

}

c += t ((int) Mathpow(16, (valuelength() - j - 1)));

}

sbappend((char) c);

i = i + 6;

}

return sbtoString();

}

public class Coder {

public static void main(String[] args) throws Exception {

String str = "无";

byte[] byteOfChar = strgetBytes("Unicode");

StringBuffer sb = new StringBuffer("\\u");

for (int i = 2; i < byteOfCharlength; i++) {

sbappend(getUnicode(byteOfChar[i]));

}

while(sblength() < 6){

sbappend("0");

}

Systemoutprintln(sbtoString());

}

// 用于获取一个字节的十六进制写法

private static String getUnicode(byte byteOfChar) {

int i = byteOfChar;

if(i < 0){

i = 1282+i;

}

StringBuffer sb = new StringBuffer();

char[] unicode = null;

while (i != 0) {

switch (i % 16) {

case 10:

sbappend("A");

break;

case 11:

sbappend("B");

break;

case 12:

sbappend("C");

break;

case 13:

sbappend("D");

break;

case 14:

sbappend("E");

break;

case 15:

sbappend("F");

break;

default:

sbappend(i % 16);

break;

}

i = i / 16;

}

unicode = sbtoString()toCharArray();

sb = new StringBuffer();

for (int u = unicodelength - 1; u >= 0; u--) {

sbappend(unicode[u]);

}

return sbtoString();

}

}

将字符转换成unicode编码。

以上就是关于批处理有什么办法处理unicode字符全部的内容,包括:批处理有什么办法处理unicode字符、编写JAVA程序输出中文字的unicode编码、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9317349.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存