
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编码、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)