2014-10-22 51 views
0

我有一個方法來創建和記錄到XML文件。它會產生損壞的結果。我的土耳其人寫作十六進制表達式。當我使用UTF-8時,我無法解決問題。順便說一下,我用Sublime和Notepad ++編輯器進行了檢查。XML編碼utf-8不工作土耳其字符

​​

當我與那些下面的代碼進行測試:

@Test 
    public void testAddingTask() throws Exception { 
     IBAO testBao = XMLBAO.getInstance(); 
     BatFile testBatFile = new BatFile(); 
     testBatFile.setName("ŞŞŞŞŞ"); 
     testBatFile.setBriefDesc("ÇÇÇÇÇÇ"); 
     testBatFile.setDesc("ĞĞĞĞĞĞ"); 
     testBatFile.setFileName("FileName"); 
     testBatFile.setCreationTime("Merhaba"); 
     testBatFile.setExecutionPattern("ööçöçöçüü"); 
     testBatFile.addCommandArgs("ZZZZZZZZ"); 
     testBatFile.setTaskID("ÜÜÜÜÜÜÜÜ"); 
     testBao.add(testBatFile); 
    } 

它產生了我這樣的結果:

<BatFiles> 
<BatFile> 
<Name>???/Name> 
<BriefDesc>???</BriefDesc> 
<Desc>???</Desc> 
<FileName>FileName</FileName> 
<CommandArgs> 
<CommandArg>ZZZZZZZZ</CommandArg> 
</CommandArgs> 
<CreationTime>Merhaba</CreationTime> 
<SchedulerPattern>??????</SchedulerPattern> 
<TaskID>????</TaskID> 
</BatFile> 
</BatFiles> 

回答

1

你寫一個字符流,而不是讓編碼數據的API控件寫爲。 FileWriter使用可能不是UTF-8的默認平臺編碼:

此類的構造函數假定默認字符編碼和默認字節緩衝區大小是可接受的。

使用與StreamResult一個FileOutputStream(在try-with-resources塊。)


您還可能有因Java source file encodings問題。考慮使用Unicode轉義而不是文字。即,"\u015E"而不是"Ş"

+0

使用FileOutputStream解決了我的問題。但我想創建語義XML文件。使用\ u015e而不是±是不可接受的。但順便說一句,你讓我開始。 – 2014-10-23 05:01:34