Java中如何對字符串進行utf-8編碼
java對字符串進行utf-8編碼
我們在調(diào)用第三方 API 時,常常會被要求用到路徑變量,而路徑變量一般都是 utf-8 編碼的,因此需要對傳入的字符串參數(shù)進行 utf-8 編碼處理。
本文提供一種使用 URLEncoder 庫進行編碼的方式。
廢話少說,上代碼。
// 使用 URLEncoder 庫對字符串進行 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,中文一個漢字是三個字節(jié),一個字母或特殊符號是1個字節(jié)。
String類沒有提供按字節(jié)截取字符串的方法,
StringUtil提供了截取的方法,但是默認是8858-1的,而且不能指定編碼格式

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

建個測試方法測試下

還是有些問題,截取3個字節(jié)時,正好把中字截取出來了,4個字節(jié)時有亂碼,5個字節(jié)時,還有亂碼,6個字節(jié)時,打印了兩個字節(jié),正好兩個中文漢字。也就是說,本身是三個字節(jié)的文字,我們只取了它的1個字節(jié),所以識別不出來出現(xiàn)了亂碼!
經(jīng)過反復(fù)測試,亂碼就是?這種符號,別的符號沒測出來,應(yīng)該也沒啥別的符號,我們就將這種符號截取掉就行了。
最后測試的代碼

亂碼沒有了,而且準(zhǔn)確率還高,因為字符串的情況挺復(fù)雜的,什么都有,文字,標(biāo)點,特殊符號,穿插其中,字節(jié)也不一樣,網(wǎng)上看了很多例子,都是他們自己編寫的算法啥的,用了之后,錯誤率挺高的。
/**
*string:字符串
offset:從哪個字節(jié)開始
len:從哪個字節(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("?","")
}
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java讀取properties文件連接數(shù)據(jù)庫的方法示例
這篇文章主要介紹了Java讀取properties文件連接數(shù)據(jù)庫的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-04-04
Spring Cloud Gateway替代zuul作為API網(wǎng)關(guān)的方法
本文簡要介紹如何使用Spring Cloud Gateway 作為API 網(wǎng)關(guān)(不是使用zuul作為網(wǎng)關(guān)),結(jié)合實例代碼給大家詳細講解,感興趣的朋友跟隨小編一起看看吧2023-02-02
詳解SpringBoot與SpringCloud的版本對應(yīng)詳細版
這篇文章主要介紹了詳解SpringBoot與SpringCloud的版本對應(yīng)詳細版,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Quarkus集成open api接口使用swagger ui展示
這篇文章主要為大家介紹了Quarkus集成open?api接口使用swagger?ui的展示示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2022-02-02

