2013-09-25 40 views
1

我正在Ubuntu Linux上編寫一個java應用程序,該應用程序讀取文本文件並從數據創建xml文件。一些文字包含彎撇號和引號,我轉換爲使用下面的代碼直撇號和引號:Linux上的java unicode轉換無法在max os上工作x

dataLine = dataLine.replaceAll("[\u2018|\u2019]", "\u0027").replaceAll("[\u201C|\u201D]", "\u005c\u0022"); 

這工作得很好,但是當我端口的jar文件到Mac OSX的機器,我得到三個問題標記我應該在哪裏得到直撇子和報價。我在Mac上創建了一個測試應用程序,使用相同的代碼行來完成轉換和輸入相同的測試文件,並且它工作正常。爲什麼Linux機器上創建的jar文件不能在Mac上正常工作?我認爲java應該是跨平臺兼容的。

+1

您是否知道'[\ u2018 | \ u2019]'匹配三個字符? – Joni

+0

「我得到三個問號」讓他們在哪裏?往返途中有幾處編碼錯誤可能會蔓延起來,在發生這種情況時需要進行隔離。 – millimoose

回答

2

有可能是你沒有正確讀取文件開始。你沒有展示你如何閱讀文件,但我的猜測是你只是使用FileReaderInputStreamReader沒有指定編碼。在這種情況下,將使用默認平臺編碼 - 如果這不是文件的實際編碼,則不會讀取正確的字符。您應該能夠檢測到,而無需進行任何替換。

相反,您應該使用FileInputStream並用正確的編碼將其包裝在InputStreamReader中 - 這可能是UTF-8,因爲它是XML。 (您應該可以輕鬆檢查。)

+0

好猜。我認爲OS X上的默認Java編碼可能仍然是MacRoman,而不是UTF-8。 – millimoose

+0

這個技巧。謝謝! – user2817247

相關問題