溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java中怎么對(duì)字符串進(jìn)行utf-8編碼

發(fā)布時(shí)間:2023-04-18 16:23:06 來源:億速云 閱讀:139 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“Java中怎么對(duì)字符串進(jìn)行utf-8編碼”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

java對(duì)字符串進(jìn)行utf-8編碼

我們?cè)谡{(diào)用第三方 API 時(shí),常常會(huì)被要求用到路徑變量,而路徑變量一般都是 utf-8 編碼的,因此需要對(duì)傳入的字符串參數(shù)進(jìn)行 utf-8 編碼處理。

本文提供一種使用 URLEncoder 庫進(jìn)行編碼的方式。

廢話少說,上代碼。

// 使用 URLEncoder 庫對(duì)字符串進(jìn)行 utf-8 編碼
import java.net.URLEncoder;

public String encodePathVariable(String pathVariable) {
   String ret = "default";
    try {
        ret = URLEncoder.encode(pathVariable, "utf-8");
        System.out.println(pathVariable + " : " + ret);
    }catch(Exception e) {
        System.out.println(e);
    }
    return ret;
}

java按照字節(jié)截取字符串-utf-8

如何按照utf-8的字節(jié)截取字符串呢?

utf-8,中文一個(gè)漢字是三個(gè)字節(jié),一個(gè)字母或特殊符號(hào)是1個(gè)字節(jié)。

String類沒有提供按字節(jié)截取字符串的方法,

StringUtil提供了截取的方法,但是默認(rèn)是8858-1的,而且不能指定編碼格式

Java中怎么對(duì)字符串進(jìn)行utf-8編碼

但是給了我們思路,我們就將這段代碼粘貼出來,將后面的編碼格式給改成utf-8的

Java中怎么對(duì)字符串進(jìn)行utf-8編碼

建個(gè)測(cè)試方法測(cè)試下

Java中怎么對(duì)字符串進(jìn)行utf-8編碼

還是有些問題,截取3個(gè)字節(jié)時(shí),正好把中字截取出來了,4個(gè)字節(jié)時(shí)有亂碼,5個(gè)字節(jié)時(shí),還有亂碼,6個(gè)字節(jié)時(shí),打印了兩個(gè)字節(jié),正好兩個(gè)中文漢字。也就是說,本身是三個(gè)字節(jié)的文字,我們只取了它的1個(gè)字節(jié),所以識(shí)別不出來出現(xiàn)了亂碼!

經(jīng)過反復(fù)測(cè)試,亂碼就是?這種符號(hào),別的符號(hào)沒測(cè)出來,應(yīng)該也沒啥別的符號(hào),我們就將這種符號(hào)截取掉就行了。

最后測(cè)試的代碼

Java中怎么對(duì)字符串進(jìn)行utf-8編碼

亂碼沒有了,而且準(zhǔn)確率還高,因?yàn)樽址那闆r挺復(fù)雜的,什么都有,文字,標(biāo)點(diǎn),特殊符號(hào),穿插其中,字節(jié)也不一樣,網(wǎng)上看了很多例子,都是他們自己編寫的算法啥的,用了之后,錯(cuò)誤率挺高的。

/**
*string:字符串
 offset:從哪個(gè)字節(jié)開始
 len:從哪個(gè)字節(jié)結(jié)束
*/
public static String getFromCompressedUnicode(String string,int offset,int len) throws UnsupportedEncodeingException{
byte[] bytes = string.getBytes("utf-8");
int len_to_use = Math.min(len,bytes.length - offset);
 return new String(bytes,offset,len_to_use,"utf-8").replaceAll("?","")
}

“Java中怎么對(duì)字符串進(jìn)行utf-8編碼”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI