導航:首頁 > 編程語言 > javautf8tounicode

javautf8tounicode

發布時間:2023-06-01 09:04:02

java 中的五角星轉換成unicode碼

(Stringstr){
char[]myBuffer=str.toCharArray();

StringBuffersb=newStringBuffer();
轎激for(inti=0;i<str.length();i++){
UnicodeBlockub=梁帆賀UnicodeBlock.of(myBuffer[i]);
if(ub==UnicodeBlock.BASIC_LATIN){
//英文及數字等
sb.append(myBuffer[i]);
}elseif(ub==UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS){
//全形半形字元
intj=(int)myBuffer[i]-65248;
sb.append((char)j);
}else{
橡派//漢字
shorts=(short)myBuffer[i];
StringhexS=Integer.toHexString(s);
Stringunicode="\"+'u'+hexS;
sb.append(unicode.toLowerCase());
}
}
returnsb.toString();
}

⑵ java中Unicode碼的轉換

private static String decode(char[] in) throws Exception {
int off = 0;
char c;
char[] out = new char[in.length];
int outLen = 0;
while (off < in.length) {
c = in[off++];
if (c == '\\') {
if (in.length > off) { // 是否有下一個字元
c = in[off++]; // 取出下一個字元
} else {
out[outLen++] = '\\'; // 末字元為'\',返回
break;
}
if (c == 'u') { // 如果是"\\u"
int value = 0;
if (in.length > off + 4) { // 判斷"\\u"後邊是否有四個字元
boolean isUnicode = true;
for (int i = 0; i < 4; i++) { // 遍歷四個字元
c = in[off++];
switch (c) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
value = (value << 4) + c - '0';
break;
case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
value = (value << 4) + 10 + c - 'a';
break;
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
value = (value << 4) + 10 + c - 'A';
break;
default:
isUnicode = false; // 判斷是否為unicode碼
}
}
if (isUnicode) { // 是unicode碼轉換為字元
out[outLen++] = (char) value;
} else { // 不是unicode碼把"\\uXXXX"填入返回值
off = off - 4;
out[outLen++] = '\\';
out[outLen++] = 'u';
out[outLen++] = in[off++];
}
} else { // 不夠四個字元則把"\\u"放入返回結果並繼續
out[outLen++] = '\\';
out[outLen++] = 'u';
continue;
}
} else {
switch (c) { // 判斷"\\"後邊是否接特殊字元,回車,tab一類的
case 't':
c = '\t';
out[outLen++] = c;
break;
case 'r':
c = '\r';
out[outLen++] = c;
break;
case 'n':
c = '\n';
out[outLen++] = c;
break;
case 'f':
c = '\f';
out[outLen++] = c;
break;
default:
out[outLen++] = '\\';
out[outLen++] = c;
break;
}
}
} else {
out[outLen++] = (char) c;
}
}
return new String(out, 0, outLen);
}

⑶ java中 unicode編碼轉換成UTF-8,請前輩指點,謝謝

看來你手裡有這個代碼嘍。
我從來沒仔細研究過具體如何轉換的,只是知道,如果java里String str = 什麼什麼; 能夠取到str值了,那麼此時的str一定為unicode了,轉換的時候一般用在輸出上。

&是按位與,就是每一個二進制位分別對應進行與操作。
|是按位或,就是每一個二進制位分別對應進行或操作。

⑷ java中如何在中文字元和unicode編碼之間進行轉換

可以這樣來重構字元串new String(「XXX".getByte(),」UTF-8「);後面加上編碼方式

⑸ java使用unicode為默認編碼是什麼意思

java初學者都會接觸到一個概念,既java的默認編碼是uincode,但書上也就出現這句話而已,究竟是什麼意思就沒再說。其實對於一個程序員來說,一個平台的編碼方式是不用了解的,因為這是他內部處理字元的方式,和我們頂層設計程序是沒有多大關系(如果真要說有關系的話,一個就是你對這個平台的熟悉程度,另一個就只能是你要處理的字元奇葩到要考慮編譯器有沒有包括這個字元)。但這並不是指我們在編程的時候完全不用考慮編碼問題,恰恰相反,編碼問題是跨系統交流的基本。
那java哪裡會用到編碼問題呢?最常見的是流,下面有兩個例子。1.在linux下用java創建了一個文件(這里默認代碼里沒有指定編碼),裡麵包括英文和中文,然後在windows下同樣用java讀取這個文件,並輸出,結果中文出現了亂碼;2.android手機和電腦的兩個java程序進行類似qq的信息交流,中文都是亂碼。疑惑來了,java不是跨平台嗎,而且默認編碼就是unicode,為什麼會有編碼? 正如上面所說,java的系統編碼是管理內部變數等信息的,是統一不能變的,但上面兩個例子出現亂碼的原因在於這些字元信息是從外界讀取的,編碼方式直接影響到字元的顯示,比如gbk一個字元是1或2個位元組,中文是2個,而utf8是1到4個位元組不定,中文是3個,utf16是2個位元組固定不變,所以很明顯了,同樣位元組數的源信息可以每2個或者每3個位元組表達一個中文,不同編碼當然不同了,而且即使gbk和utf16都是兩個位元組表示一個中文,同樣的二進制也對應不同的字元。所以從外部讀取到這些byte信息後,就要指定編碼,比如new
String(byte[],charset),當然,也可以在構建流的時候就指定,像new
InputStreamReader(InputStream,charset)等,但像BufferedReader等沒有相應的構造函數,就只能把上面的InputStreamReader作為參數了。
總結:
1.String和流(包括控制台的輸出輸入)的默認編碼是根據系統而定,即jvm假設這些信息是當前系統創建的,windows默認中文是gbk,linux和mac是utf8(這里又來了,utf8和unicode是什麼意思,簡單地說,unicode是把每個字元和一個唯一的二進制碼對應的標准,而utf是unicode
transformation
format,即如何表示每個唯一的二進制碼,utf8,utf16和utf32是不同的編碼方式);
2.IDE設置的編碼方式用於存取java源文件,對於在不同系統平台上共享代碼很重要;
3.java編譯器採用utf8,即class文件的存儲是用utf8,因為相對於utf16,utf8在處理英文佔用內存小,而程序大部分都是英文;
4.jvm運行時的編碼方式是utf16,即jvm用utf8從class文件讀取程序後再轉化為utf16編碼的字元串,因為utf16是2個位元組,統一的長度更方便jvm申請數組等操作;
5.網頁大部分是用utf8編碼的,在html頭幾行有charset的信息,在對下載下來的網頁進行解析時,要注意編碼,谷歌網路在對搜索結果的解析時也是用utf8的,所以在涉及到網路時編碼問題非常重要,本人曾經栽得很慘,當然了,誰叫windows的編碼不是utf8;
6.不知大家有沒有經歷過,如果編碼弄錯了,一般只有中文會出現亂碼,而中文後面的英文是正確的,不合理啊,這不是類似多骨諾米牌嗎,一個錯了,後面不是全倒嗎。所以別小看那些制定編碼的專家,像utf8每個位元組的前幾位都用來表示一些信息,不同位元組還不一樣,而utf16也有,所以弄出了utf16le和utf16be

⑹ 關於UTF-8編碼轉換為漢字的

UTF-8變成壓縮編碼的,轉換起來比拍數裂較復雜.
我寫襲閉過一個函數,可以實現這個功能:
CString UTF8toUnicode(char* s)
{
int len = 0;
WCHAR* r = new WCHAR[strlen(s) * 2];
while(s[0])
{
int bytes = 1;
if(s[0] & 0x80)
while(s[0] & (0x80 >畢叢> bytes)) bytes++;
if(bytes == 1)
r[len] = s[0];
else
{
r[len] = 0;
for(char*p = s + (bytes - 1); p > s; p--)
r[len] |= ((*p) & 0x3F) << ((bytes - (p - s) - 1) * 6);
r[len] |= (s[0] & ((1 << (7 - bytes)) - 1)) << ((bytes - 1) * 6);
}
len++;
s += bytes;
}
r[len] = 0;
char*buffer = new char[len * 2 + 1];
ZeroMemory(buffer, len * 2 + 1);
::WideCharToMultiByte(CP_ACP, NULL, r, len, buffer, 1+ 2 * len, NULL, NULL);
CString str = buffer;
Delete[] r;
delete[] buffer;
return str;
}
另外,如果要省事,直接用Windows自帶的記事本另存為就能轉了

⑺ java怎麼把UTF-8裡面的漢字轉成Unicode

string.getbytes("ISO646-US")

Unicode當然是一個很大的集合,現在的規模可以容納100多萬個符號。每個符號的編碼都不一樣,比如,U+0639表示阿拉伯字雹衫好母Ain,U+0041表示英語的大寫字母A,「漢」這個字的Unicode編碼是U+6C49。
Unicode固然統一了編碼方式,但是它的效率不高,比如UCS-4(Unicode的標准之一)規定用4個位元組存儲一個符號,那麼每個英文字母前都必然有三塌含個字源鉛節是0,這對存儲和傳輸來說都很耗資源。

⑻ java怎麼設置utf8

伺服器端
修改資料庫配置文件/etc/my.cnf
character-set-server=utf8mb4
collation_server=utf8mb4_unicode_ci
重啟MySQL(按照官方文答培檔,這兩個選項都是可以動態設置的,但是實際的經驗是Server必須重啟一下)
已有的表修改編碼為utf8mb4
ALTER TABLE
tbl_name
CONVERT TO CHARACTER SET
charset_name;
使用下面這個語句只是修改了表的default編碼
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4;
客戶端
jdbc的連接字元串不支持utf8mb4,這個 這種方式 來解決的,如果伺服器端設置了character_set_server=utf8mb4,則客戶端會自動將傳過去的utf-8視作清和唯utf8mb4。
Connector/J did not support utf8mb4 for servers 5.5.2 and newer.
Connector/J now auto-detects servers configured with character_set_server=utf8mb4 or treats the Java encoding utf-8 passed using characterEncoding=... as utf8mb4 in the SET NAMES= calls it makes when establishing the connection. (Bug #54175)
其他的client端,比如phppython需要看下client是否支持,如果不能在連接字元串中指定的話,可以在獲取連接之後,執行」set names utf8mb4″來解決這個問題;
因為utf8mb4是utf8的超集,理論上即使client修改字元集為utf8mb4,也會不棚滑會對已有的utf8編碼讀取產生任何問題。

⑼ java中「utf-8」編碼的轉義字元應該怎麼轉換成中文

String str = new String("暗示大家答臘猛".getBytes(),"UTF-8");x0dx0a重新用utf-8編碼x0dx0ax0dx0a或局頌者用清橋x0dx0aURLDecoder.decode("xxxxxx", "UTF-8");重新用utf-8解碼

⑽ java怎麼把UTF-8字元串轉成GBK字元串

java不同編碼之間進行轉換,都需要使用unicode作為中轉。

以utf-8轉gbk為例,示例代碼如下:

Stringt="這是一個字元串aaa111";
Stringutf8=newString(t.getBytes("UTF-8"));
System.out.println(utf8);
Stringunicode=newString(utf8.getBytes(),"UTF-8");
System.out.println(unicode);
Stringgbk=newString(unicode.getBytes("GBK"));
System.out.println(gbk);
閱讀全文

與javautf8tounicode相關的資料

熱點內容
高三倒計時緩解壓力 瀏覽:619
一捏就變形的解壓玩具怎麼折 瀏覽:196
易融貸app借錢怎麼 瀏覽:939
單片機側重點 瀏覽:867
江蘇惠普伺服器虛擬化設計雲主機 瀏覽:647
在歐拉app好貓充電樁怎麼申請 瀏覽:449
反編譯代碼教程 瀏覽:798
linuxio阻塞 瀏覽:973
8腳單片機pic 瀏覽:821
如何看彩色塗鴉遮住的字安卓 瀏覽:688
擺渡機器人編程 瀏覽:654
軟程序員著裝 瀏覽:139
寶雞雲存儲伺服器 瀏覽:668
推薦超解壓游戲無廣告 瀏覽:634
大華伺服器怎麼添加門禁 瀏覽:784
戰地伺服器60hz什麼意思 瀏覽:760
成高級程序員學什麼 瀏覽:501
阿里雲接入備案後退掉伺服器 瀏覽:928
ne40e命令 瀏覽:85
安卓輸入法使用什麼編碼 瀏覽:184