3 回答

TA貢獻(xiàn)1866條經(jīng)驗 獲得超5個贊
我發(fā)現(xiàn)了問題。我們正在使用 org.apache.commons.lang3.StringEscapeUtils.unescapeHtml4 將字符串中的 HTML 實體轉(zhuǎn)換為它們的非編碼形式。這似乎破壞了一些非拉丁字符。例如,通過此方法傳遞字符串“Italien ????”會將其轉(zhuǎn)換為“Italien ???” (最后一個字符被破壞)
通過此方法傳遞“??????????????????????????????????????????????????”將其轉(zhuǎn)換為“??????????????????????? ???????????????????”
import org.apache.commons.lang3.StringEscapeUtils;
public class CharacterTest {
public static void main(String[] args) {
String good = "??????????????????????????????????????????????????";
String bad = StringEscapeUtils.unescapeHtml4(good);
System.out.println(good + "->" + bad);
}
}
??????????????????????????????????????????????????->???????????????????????????????????????
現(xiàn)在找到一個替代的 HTML 實體解碼器......

TA貢獻(xiàn)1735條經(jīng)驗 獲得超5個贊
Is there a proper way to convert these characters into UTF8
可能,如果您只是發(fā)送字符串,它將被轉(zhuǎn)換為 UTF-8。這就是 Java 編碼器的工作方式。
如果沒有并且您正在發(fā)送二進制文件,則可以直接轉(zhuǎn)換:
private static byte[] removeSurrogates(String query) { return query.getBytes( "UTF-8" ); }

TA貢獻(xiàn)1856條經(jīng)驗 獲得超5個贊
讓我暫時離開 Java 來說明 BigQuery 可以處理表情符號:
CREATE TABLE `public_dump.emoji_test`
AS
SELECT "??????????????????????????????????????????????????" emojis
然后測試是否存在:
SELECT COUNT(*)
FROM `fh-bigquery.public_dump.emoji_test`
WHERE emojis LIKE '%??%'
1
用 Python 做這件事很簡單:
插入新數(shù)據(jù)也不是問題:
很抱歉,我不知道如何使用 Java 來解決這個問題,但我希望看到 BigQuery 的 API 能夠優(yōu)雅地處理表情符號的證明會有所幫助。
添加回答
舉報