2011-11-09 53 views
2

我在日本一個文件夾名稱。 CFileDialog getpathNameis當文件夾被選中時返回一些問號。有什麼方法可以解決它?的CFileDialog getpathName不讀日本

+2

代碼片段?您的應用是否啓用了Unicode支持? –

+0

這是Visual-C++(或其他?)相關的問題,而不是一般的C++。更具體的標籤可以幫助有能力回答這個問題的人看到它,幫助其他社區成員找到問題,並增加獲得答案的機率。這是一個雙贏;] – friendzis

+0

你怎麼知道'GetPathName'沒有返回日文字符?問題出現在顯示結果的代碼中,而不是在'GetPathName'本身中嗎? –

回答

2

如果您的應用建立與MBCS支持而非Unicode支持,日本的路徑將被正確處理只有(又名系統區域)的「的非Unicode程序語言」設置爲日語,這是對於日本用戶來說,如果你不是日本人,可能不適合你。

如果您的系統語言環境是不是日本人,之前它被GetPathName()返回的路徑被翻譯成你的代碼頁。它將包含替換(?)字符或垃圾。最有可能的是兩者的結合。

這裏可用幾種可能性:

  1. 不要做任何事情。日本的大多數用戶應用程序應該能正常工作。或不...

  2. 測試日語代碼頁下您的應用程序。爲此,要麼暫時將語言更改爲非Unicode程序(需要重啓)或者(更容易)在AppLocale下測試您的應用程序。 (注意:如果你有問題,可以在Windows 7下運行。)This article may help

  3. 其切換爲Unicode。根據代碼庫的大小,這可能是一項非常單調乏味的任務,主要取決於輸入和輸出以及代碼中是否使用_T("blah")字符串文字。當然,它有更多的方面,但這些是最重要的。順便說一句,所有新項目都應該考慮到Unicode支持。

  4. 處理這個路徑問題具體。由於我們講的是文件對話框,整個對話框應該以Unicode形式打開。這意味着您可能必須明確地調用底層Win32 API的Unicode版本,而不是簡單地調用CFileDialog。這並不複雜,但風險在於你只能連續解決第一個問題。在你的日語路徑正確之後,你必須處理用戶輸入的日文文字,......所以我認爲這個解決方案不是一個好的解決方案。

解決方案#2無疑是識別小問題的最快方法。從長遠來看,解決方案#3肯定是最好的。但要確保你真的需要它,因爲現有的應用程序可能很乏味。