導航:首頁 > 編程語言 > java移除unicode

java移除unicode

發布時間:2024-06-13 21:42:01

java處理unicode字元

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;
sb.setLength(0);
for (i = 0; i < str.length(); i++)
{
c = str.charAt(i);
sb.append("\\u");
j = (c >>>8); //取出高8位
tmp = Integer.toHexString(j);
if (tmp.length() == 1)
sb.append("0");
sb.append(tmp);
j = (c & 0xFF); //取出低8位
tmp = Integer.toHexString(j);
if (tmp.length() == 1)
sb.append("0");
sb.append(tmp);

}
return (new String(sb));
}

2)unicode轉成字元串,與上述過程反向操作即可
/**
* 將unicode 字元串
* @param str 待轉字元串
* @return 普通字元串
*/
public String revert(String str)
{
str = (str == null ? "" : str);
if (str.indexOf("\\u") == -1)//如果不是unicode碼則原樣返回
return str;

StringBuffer sb = new StringBuffer(1000);

for (int i = 0; i < str.length() - 6;)
{
String strTemp = str.substring(i, i + 6);
String value = strTemp.substring(2);
int c = 0;
for (int j = 0; j < value.length(); j++)
{
char tempChar = value.charAt(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) Math.pow(16, (value.length() - j - 1)));
}
sb.append((char) c);
i = i + 6;
}
return sb.toString();
}

❷ JAVA怎麼把unicode轉換成GBK ~然後我的JAVA代碼里出現了亂碼導致運行不了,你能幫我嗎

\u2605 ★

public static String utf8ToUnicode(String str) {
char[] myBuffer = str.toCharArray();

StringBuffer sb = new StringBuffer();
for (int i = 0; i < str.length(); i++) {
UnicodeBlock ub = UnicodeBlock.of(myBuffer[i]);
if(ub == UnicodeBlock.BASIC_LATIN){
//英文及數字等
sb.append(myBuffer[i]);
}else if(ub == UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS){
//全形半形字元
int j = (int) myBuffer[i] - 65248;
sb.append((char)j);
}else{
//漢字
short s = (short) myBuffer[i];
String hexS = Integer.toHexString(s);
String unicode = "\\" + 'u' + hexS;
sb.append(unicode.toLowerCase());
}
}
return sb.toString();
}

❸ 我反編譯JAVA文件,有一些漢字信息就變成了\u9879 了

使用 jdk 自帶的 native2ascii.exe 工具,在你的 jdk文件夾/bin 下能找到。
針對你的問題,在 cmd 窗口中執行下面的命令即可(需要將 jdk文件夾/bin 加入到 path 環境變數中):

native2ascii -reverse C:\abc.java c:\abc2.java
(這里abc.java表示你的含有 \uxxxx 字元的java文件;
c:\abc2.java 表示轉後後的文件)

下面附上完整的 使用方法:
------------------------------
native2ascii用法解析

native2ascii是sun java sdk提供的一個工具。用來將別的文本類文件(比如

*.txt,*.ini,*.properties,*.java等等)編碼轉為Unicode編碼。為什麼要進行轉碼,

原因在於程序的國際化。

Java 編譯器和其它 Java 工具只能處理含有 Latin-1 和/或 Unicode 編碼(\udddd 記

號)字元的文件。native2ascii 將含有其它字元編碼的文件轉換成含 Latin-1 和/或

Unicode 編碼字元的文件。

若省略 outputfile,則使用標准輸出設備輸出。此外,如果也省略 inputfile,則使用

標准輸入設備輸入。

用法:native2ascii [-reverse] [-encoding 編碼] [輸入文件 [輸出文件]]

-[options]:表示命令開關,有兩個選項可供選擇
-reverse:
執行相反的操作:將含 Latin-1 和/或 Unicode 編碼字元的文件轉換成含本地編碼字元

的文件,不指定編碼情況下,將轉為本地編碼。

-encoding encoding_name
指定轉換過程使用的編碼名稱。預設的編碼從系統屬性 file.encoding 中得到。

encoding_name 字元串必須是下表第一欄所示的字元串。

[inputfile [outputfile]]
inputfile:表示輸入文件全名。
outputfile:輸出文件名。如果缺少此參數,將輸出到控制台

-------------------------------------------------------------
8859_1 ISO 8859-1
8859_2 ISO 8859-2
8859_3 ISO 8859-3
8859_4 ISO 8859-4
8859_5 ISO 8859-5
8859_6 ISO 8859-6
8859_7 ISO 8859-7
8859_8 ISO 8859-8
8859_9 ISO 8859-9
Big5 Big5 碼,繁體中文
CNS11643 CNS 11643,繁體中文
Cp037 美國、加拿大(兩種語言,法語)、荷蘭、葡萄牙、巴西、澳大利亞
Cp1006 IBM AIX 巴基斯坦(烏爾都語)
Cp1025 IBM 多語種西里爾語:保加利亞、波斯尼亞 黑塞哥維那、馬其頓 (FYR)
Cp1026 IBM Latin-5,土耳其
Cp1046 IBM Open Edition US EBCDIC
Cp1097 IBM 伊朗(波斯語)/波斯
Cp1098 IBM 伊朗(波斯語)/波斯 (PC)
Cp1112 IBM 拉脫維亞,立陶宛
Cp1122 IBM 愛沙尼亞
Cp1123 IBM 烏克蘭
Cp1124 IBM AIX 烏克蘭
Cp1125 IBM 烏克蘭 (PC)
Cp1250 Windows 東歐
Cp1251 Windows 斯拉夫語
Cp1252 Windows Latin-1
Cp1253 Windows 希臘
Cp1254 Windows 土耳其
Cp1255 Windows 希伯萊
Cp1256 Windows 阿拉伯
Cp1257 Windows 波羅的語
Cp1258 Windows 越南語
Cp1381 IBM OS/2, DOS 中華人民共和國 (PRC)
Cp1383 IBM AIX 中華人民共和國 (PRC)
Cp273 IBM 奧地利、德國
Cp277 IBM 丹麥、挪威
Cp278 IBM 芬蘭、瑞典
Cp280 IBM 義大利
Cp284 IBM 加泰羅尼亞語/西班牙、拉丁美洲西班牙語
Cp285 IBM 英國、愛爾蘭
Cp297 IBM 法國
Cp33722 IBM-eucJP - 日語 (5050 的超集)
Cp420 IBM 阿拉伯
Cp424 IBM 希伯萊
Cp437 MS-DOS 美國、澳大利亞、紐西蘭、南非
Cp500 EBCDIC 500V1
Cp737 PC 希臘
Cp775 PC 波羅的語
Cp838 IBM 泰國擴展 SBCS
Cp850 MS-DOS Latin-1
Cp852 MS-DOS Latin-2
Cp855 IBM 斯拉夫語
Cp857 IBM 土耳其語
Cp860 MS-DOS 葡萄牙語
Cp861 MS-DOS 冰島語
Cp862 PC 希伯萊
Cp863 MS-DOS 加拿大法語
Cp864 PC 阿拉伯語
Cp865 MS-DOS 日爾曼語
Cp866 MS-DOS 俄語
Cp868 MS-DOS 巴基斯坦語
Cp869 IBM 現代希臘語
Cp870 IBM 多語種 Latin-2
Cp871 IBM 冰島語
Cp874 IBM 泰國語
Cp875 IBM 希臘語
Cp918 IBM 巴基斯坦(烏爾都語)
Cp921 IBM 拉脫維亞、立陶宛(AIX, DOS)
Cp922 IBM 愛沙尼亞 (AIX, DOS)
Cp930 與 4370 UDC 混合的日語,5026 的超集
Cp933 與 1880 UDC 混合的韓文,5029 的超集
Cp935 與 1880 UDC 混合的簡體中文主機,5031 的超集
Cp937 與 6204 UDC 混合的繁體中文,5033 的超集
Cp939 與 4370 UDC 混合的日語拉丁字母,5035 的超集
Cp942 日語 (OS/2),932 的超集
Cp948 OS/2 中文(台灣),938 超集
Cp949 PC 韓文
Cp950 PC 中文(香港、台灣)
Cp964 AIX 中文(台灣)
Cp970 AIX 韓文
EUCJIS JIS, EUC 編碼、日語
GB2312 GB2312, EUC 編碼、簡體中文
GBK GBK, 簡體中文
ISO2022CN ISO 2022 CN, 中文
ISO2022CN_CNS ISO-2022-CN 形式的 CNS 11643,繁體中文
ISO2022CN_GB ISO-2022-CN 形式的 GB 2312,簡體中文
ISO2022KR ISO 2022 KR, 韓文
JIS JIS, 日語
JIS0208 JIS 0208, 日語
KOI8_R KOI8-R, 俄語
KSC5601 KS C 5601, 韓文
MS874 Windows 泰國語
MacArabic Macintosh 阿拉伯語
MacCentralEurope Macintosh Latin-2
MacCroatian Macintosh 克羅埃西亞語
MacCyrillic Macintosh 斯拉夫語
MacDingbat Macintosh Dingbat
MacGreek Macintosh 希臘語
MacHebrew Macintosh 希伯萊語
MacIceland Macintosh 冰島語
MacRoman Macintosh 羅馬語
MacRomania Macintosh 羅馬尼亞語
MacSymbol Macintosh 符號
MacThai Macintosh 泰國語
MacTurkish Macintosh 土耳其語
MacUkraine Macintosh 烏克蘭語
SJIS Shift-JIS, 日語
UTF8 UTF-8

❹ Java鍑虹幇h

濡傛灉鍦 Java 浠g爜涓鍑虹幇浜 ???h???錛岃繖鍙鑳芥槸鐢變簬緙栫爜闂棰樺艱嚧鐨勩傚叿浣撳湴璇達紝榪欏彲鑳芥槸鐢變簬浣跨敤浜嗛潪 UTF-8 緙栫爜淇濆瓨浜嗗寘鍚涓鏂囩殑婧愪唬鐮佹枃浠訛紝鎴栬呭湪緙栬瘧 Java 浠g爜鏃朵嬌鐢ㄤ簡閿欒鐨勭紪鐮佹牸寮忋

涓轟簡瑙e喅榪欎釜闂棰橈紝鍙浠ュ皾璇曚互涓嬫柟娉曪細

❺ java 自動處理unicode編碼

感覺除非是對方修改,不然沒法處理,反斜杠開頭的,應該是被識別成了8進制的數字了

❻ Java鎬庝箞瀹炵幇鍒犻櫎涓涓猽nicode緙栫爜鐨勫瓧絎

鎶奻or閲岀殑瀛楃︿覆闆嗕腑鍒頒竴涓猻tring閲岋紝鐒跺悗閫氳繃鎴鍙杝tring錛岀劧鍚庡啀杈撳嚭銆
--
class Hello
{
public static void main(String[] args)
{
System.out.println("Hello World!\b ");
}
}
//鍚庝究鍐嶅氬姞涓絀烘牸\b灝變細鐢熸晥銆

//------------------
//鍗曠嫭杈撳嚭涔熷彲浠
class Hello
{
public static void main(String[] args)
{
System.out.print("Hello World!");
System.out.print("\b");
}
}

閱讀全文

與java移除unicode相關的資料

熱點內容
64位win7下部分32位程序不能運行 瀏覽:206
dnf90版本劍魂鈍器流 瀏覽:649
陌秀直播蘋果怎麼下載ipad 瀏覽:732
簡述網路直接市場調查方式有哪些 瀏覽:683
怎麼連接移動網路設置 瀏覽:781
電腦網卡怎麼連接網路連接不上網嗎 瀏覽:838
刷子公司網站怎麼做 瀏覽:272
86版本艾爾文測試 瀏覽:714
深宮曲文件夾是哪個 瀏覽:618
蘋果u盤修復工具哪個好用 瀏覽:124
微信動態表情包搞笑 瀏覽:436
可以去哪裡找編程老師問問題 瀏覽:608
win10lol全屏 瀏覽:25
qq圖片動態動漫少女 瀏覽:122
sai繪圖教程視頻 瀏覽:519
如何分析載入減速法數據 瀏覽:672
手機怎麼免費轉換pdf文件格式 瀏覽:668
在哪個網站可以駕照年檢 瀏覽:89
iphone可以播放ape嗎 瀏覽:991
matlabp文件能破解嗎 瀏覽:817

友情鏈接