2014-01-13 94 views
1

在我的生產級應用程序中,我正在處理一些與Unicode字符相關的問題,如中文/日文字符串。Unicode字符轉爲問號

我的應用程序有一個啓動程序和一個配置文件,它可以設置運行jvm可以使用的所有參數。該配置文件作爲命令行參數的一部分傳遞。

問題中的用例是,我需要傳遞一個配置文件(名稱 - 值對格式的內容)。該配置文件的名稱中包含unicode字符(即中文)。當我從命令提示符運行應用程序。我傳遞完整的配置文件路徑,其中我複製時的文件名稱看起來像「????。conf」。當我在我的代碼中收到文件時,仍以「some/path/and/????。conf」格式。最終,當我通過文件運行此路徑時,如果存在檢查失敗,即新文件(路徑).isFile();

所以我創建了一個小程序來測試這個場景,程序的工作是將文件路徑作爲命令行參數的一部分,打印出來並讀取該文件的內容。在運行之前,它看起來與上面類似,即「some/path/and/????。conf」,當它運行並打印位置時,它仍然是相同的,即「some/path/and/????」。 CONF」。但是當我調試它時,我能夠看到正確的漢字加上它能夠讀取文件及其內容。

所以我不確定什麼是缺少/不同於我的主要應用程序。我已經檢查並嘗試的幾件事情是, 1.通過命令chcp 650001將命令提示符的編碼類型更改爲UTF-8。 2.設置java屬性「-Dfile.encoding = UTF-8」。

但是這也沒有幫助。操作系統是Windows 7,Java版本是1.7.0.45。

任何關於在哪裏看的指針和爲什麼與我的小程序類似的代碼工作,而不是與主應用程序。

====== 一個更正,作爲命令提示符的一部分傳遞給java程序的文件是xml格式。並且將編碼類型設置爲UTF-8,即通過「」。

所以同樣的文件傳遞給兩個程序,在簡單的文件讀取類的情況下,而它不與主應用程序。與主應用程序不同的是,除了這個xml文件外,還有其他參數也被傳遞。

感謝,

玉萍

回答

0

檢查編碼類型.conf文件中。應該使用UTF-8編碼保存 。

+0

更新了描述。文件類型是xml並具有UTF-8集。而且相同的文件被傳遞給兩個程序。 – Vicky

+0

你可以顯示主應用程序讀取文件的代碼嗎? –

+2

我認爲問題是*文件名*包含非ASCII字符。 – ntoskrnl

相關問題