我正在編寫一個測試應用程序。它由一個小型桌面應用程序和servlet組成。桌面是一個客戶端,並且可以從任何操作系統連接到我的servlet,正如我所想的那樣。這是greate,但我有一個txt文件在服務器上。我的桌面應用程序將行添加到txt文件(圖像文件名稱)。這些行可能包含西里爾詞,如「картинка1.jpg」,這是最大的問題,因爲我無法將原始西里爾文圖像名稱返回給我的客戶。這使得使用它的名字下載圖像變得不可能,因爲服務器無法識別像「??????? 1.jpg」這樣的圖像名稱以將其讀回到我的客戶端。我知道這是所有的編碼問題,但我想知道如何使我的客戶端桌面應用程序正常工作與我在Linux上的servlet?我的意思是如果我的客戶端和服務器有不同的本地化和「file.encoding」,我應該怎麼做?不同的操作系統 - 如何讀取客戶端應用程序的服務器txt文件
OK ......接受你的沉默我要解密的一些細節。所以事情我做的事情和我得到的是
- A)(客戶端)我用JFileChooser,以獲取 圖像文件名(讓叫它nameX)
- B)(客戶端)我使用HttpClient的4 StringBody(nameX, 「UTF-8」)的 nameX從FileItems 發送到我的servlet
- C)(服務器)獲取nameX和寫入(添加)到N.txt文件
- d)(客戶端)我得到的圖像文件 名稱顯示列表(CP1251編碼 因爲客戶端支持的話)和 選擇「nameX」
- E)(客戶端)發送「nameX」與 StringBody( nameX,「UTF-8」)頭 的servlet
- F)(服務器)獲取nameX,但由於某種原因 它是像 ?????? 1.JPG因此它無法識別 文件名是.. 。
所以我的問題是某處回來/以前的編碼我想,但我不知道......
我檢查了我的服務器編碼是
- os.name = Linux的
- sun.jnu.encoding = UTF-8
- 文件。編碼= UTF-8
- user.language = EN
和我的客戶是:
- os.name = Windows XP中
- sun.jnu.encoding = CP1251
- 的file.encoding = CP1251
- user.language = RU
請幫助我理解我在做什麼錯誤?
任何有用的註釋是讚賞:)
確保您在兩端都使用UTF-8,而不是依賴於環境中的默認設置。 – Erik 2011-04-13 14:33:19
那麼,我的客戶端是windows,它使用cp1251,服務器是unix,它使用utf-8 – user592704 2011-04-13 14:37:00
但是,如何將我的servlet寫入unix txt文件中的正確映像名稱列表從我的客戶端操作系統的名稱?我嘗試編碼從cp1251到UTF-8的所有名稱,但由於某種原因,我實際上只獲得窗口編碼:( – user592704 2011-04-13 14:39:21