特殊字符的地方我正在一個APP,其中我必須生成EXCEL與XSSFCellStyle
等,我使用Apache POI 3.9。Apache POI 3.9生成的Excel XSSF有?代替像á(西班牙語)在weblogic
在一些領域我這樣做:
cell.setValue(myString);
myString
5月包含特殊字符,如ñ
和á
,這是西班牙語。這些字符可能來自i18n.properties
,或硬編碼爲純字符串。
myString = "ññññññññ";
一切都很好,在本地機器Tomcat8,但在WebLogic Server中,在Excel中生成的,我看到'?'代替這些字符。
我在Weblogic服務器的某處讀取默認字符集是UTF-8
。當地的環境是西班牙語(cp1252),在Eclipse Luna的工作空間字符集也是cp1252
,所以這可能是原因,但我不確定。我是否應該更改Preference - Workspace
或JVM參數-Dfile.encoding=UTF-8
?
我也讀過關於Apache POI編碼處理,API處理這一切,所以我不擔心這一點。所有我能做的就是設置字體的字符集,這樣的:
font.setCharSet(FontCharset.DEFAULT);
但是,我看不到UTF-8
這裏。在源代碼中我看到:
/**
* Charset represents the basic set of characters associated with a font (that it can display), and
* corresponds to the ANSI codepage (8-bit or DBCS) of that character set used by a given language.
*
* @author Gisella Bronzetti
*/
public enum FontCharset {
ANSI(0),
DEFAULT(1),
SYMBOL(2),
MAC(77),
SHIFTJIS(128),
HANGEUL(129),
JOHAB(130),
GB2312(134),
CHINESEBIG5(136),
GREEK(161),
TURKISH(162),
VIETNAMESE(163),
HEBREW(177),
ARABIC(178),
BALTIC(186),
RUSSIAN(204),
THAI(222),
EASTEUROPE(238),
OEM(255);
既不是WESTEUROPE
。那麼我該如何設置它?
Java本身和通過該Apache POI將字符串處理爲Unicode。所以只要你輸入正確的數據,它應該正確處理它們,而不需要任何編碼設置。我首先會檢查WebLogic服務器上的數據是否確實正確地進入,例如通過執行String.getBytes(「UTF-16」)的hexdump並驗證您是否與本地相同... – centic