2017-05-05 145 views
1

我使用XSLT將XML轉換爲CSV。在XSLT我的輸出線爲:使用XSLT將XML轉換爲CSV - 保留波蘭語字母

<xsl:output method="text" encoding="UTF-8" />

有一個XML格式的很多波蘭的字母,這就是問題所在。當我使用XML工具插件從Notepad ++轉換XML時,輸出文件(未保存)正確顯示波蘭語字母,而當您單擊編碼時,它將顯示UTF-8 without BOM。當我將它保存爲CSV時 - excel不顯示波蘭語字母。當我將Notepad ++中的文件編碼更改爲UTF-8 with BOM時,它在Excel中正常工作。

我認爲所有這些都是Notepad ++的問題,但是當我在XmlSpy中轉換它時,輸出文件也不正確,就像在Excel中一樣。

我不知道我是否可以在文件的開始處(從XSLT,而不是手動)添加UTF-8 BOM符號,但我能找到的是如何刪除它們,我甚至不知道這是否會解決我的問題。我瘋了。

我使用XSLT 1.0 btw。我在XmlSpy中的編碼是默認的,即UTF-8。輸入XML的編碼也是UTF-8。

+0

在Excel中存在問題,例如它。如果像Notepad ++這樣的小型項目在打開時可以正確找出文件編碼,那麼Microsoft應該讓他們感到尷尬,因爲他們無法在其應用程序中實現等同功能。 –

回答

2

由於您使用XSLT 1.0,您可以輸出&#xFEFF;明確...

<xsl:template match="/"> 
    <xsl:value-of select="'&#xFEFF;'"/> 
    <xsl:apply-templates/> 
</xsl:template> 

如果您使用XSLT 2.0,你可以只在xsl:output使用byte-order-mark="yes"

+1

它的工作原理!我用''嘗試了一些類似的東西,其中有不同的選項用於轉義,但沒有成功。謝謝! – Shadov