我有一個Java對象,我需要馬歇爾。我的對象中的一個屬性具有包含商標符號(™)的字符串說明。商標(™)符號顯示爲?在編組過程中使用JAXB?
但是在編組完成後,它顯示爲問號(?)。我玩過編碼並嘗試將其設置爲US-ASCII,然後返回並完美地顯示符號。
我搜索了ASCII和UTF-8之間的差異,但它看起來像UTF有一個較大的字符集UTF-8 vs ASCII Text。
這就是說,如果UTF-8具有較大的字符集,從UTF-8轉到ASCII看起來有點危險。
我也看了這個Usages of ASCII and UTF-8和ASCII使用率低於1%。
使用JAXB對™進行編碼的正確方法是什麼?
我的編組進行解碼,它看起來如下:
public String marshall(final Response response) {
final Marshaller marshaller = getContextResponse().createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.FALSE);
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
final StringWriter writer = new StringWriter();
synchronized (responseMarshalMutex) {
marshaller.marshal(response, writer);
}
return writer.getBuffer().toString();
}
我相信你的陳述是相反的,因爲UTF -8是ASCII的超集,從ASCII到UTF-8總是安全的,因爲你保證不會丟失任何信息,每個字符都會被保留,但是從UTF-8到ASCII是危險的,因爲任何非ASCII字符都會被轉換成''?''(或者會產生一個異常,這取決於你如何進行轉換錫永)。 – VGR
不知道我的措辭是否正確,但正如我所說的「如果UTF-8具有較大的字符集,則從UTF-8轉到ASCII是危險的」。這確實表明UTF-8 =(ASCI +更多)。或者我錯過了一些東西:) – Chrispie