狀況

請考慮下列情況:

  • 您在 Microsoft Visual Studio 2008 Service Pack 1 (SP1) 建立 Visual C++ 的專案。

  • 專案中的檔案具有窄字串常值。這些字串常值包含亞洲字元,而且不會以字母"L"前置字元

  • 字串常值會使用 utf-8 編碼方式。

在這個案例中,當您編譯專案,字串常值會被誤解由編譯器。此外,您會遇到下列問題之一︰

  • 編譯作業成功。不過,在產生的應用程式時沒有正確顯示的字串常值。此外,您也可能會收到下列警告訊息,當您編譯專案︰

    警告 C4566︰ 通用字元名稱 'xx' 所表示的字元無法在目前的字碼頁中。

  • 編譯作業會失敗。此外,您可能會在當您編譯專案時,收到下列錯誤訊息︰

    錯誤 C2078︰ 太多的初始設定式

原因

因為編譯器會假設 < 徵狀=""> 一節中的檔案具有 MBCS 編碼方式,就會發生這個問題。由於這種行為,compilerincorrectly 會將轉譯的檔案。

解決方案

Hotfix 資訊

支援的 hotfix 可從 Microsoft 取得。不過,此 Hotfix 僅用於修正本文中所述的問題。此 Hotfix 只適用於發生此特定問題的系統上。如果 hotfix 可供下載,在此知識庫文件頂端將出現「可用的 Hotfix」區段。如果這個區段不會出現,將要求提交給 Microsoft 客戶服務及支援取得 Hotfix。注意如果發生其他問題,或如果需要進行疑難排解,您可能必須建立個別的服務要求。收取支援費用會套用到其他支援問題和此特定 hotfix 無法解決的問題。如 Microsoft 客戶服務及支援的電話號碼或建立個別的服務要求的完整清單,請造訪下列 Microsoft 網站︰

http://support.microsoft.com/contactus/?ws=support注意「 下載 Hotfix 」 表單會顯示 hotfix 可用的語言。如果看不到您的語言,是因為未提供該語言的 Hotfix 。

先決條件

您必須有 Visual Studio 2008 Service Pack 1 (SP1) 安裝套用此 hotfix 之後。

重新啟動需求

您不必重新啟動電腦,如果正在使用中沒有的 Visual Studio 執行個體,會套用此 hotfix 之後。

Hotfix 取代資訊

此 hotfix 不會取代其他 hotfix。

檔案資訊

此 hotfix 的英文版具有下列表格中所列檔案屬性 (或較新的檔案屬性)。這些檔案的日期和時間會以國際標準時間 (UTC) 格式列出。當您檢視檔案資訊時,會將它轉換為本地時間。若要查看 UTC 與當地時間的時差,請在 [控制台] 中的日期和時間項目使用 [時區] 索引標籤。

檔案名稱

檔案版本

檔案大小

日期

時間

平台

C1.dll

15.0.30729.4987

678,720

09-Mar-2010

10:18

x86

C1xx.dll

15.0.30729.4987

2,204,488

09-Mar-2010

10:18

x86

C1xx.dll

15.0.30729.4987

2,215,240

09-Mar-2010

10:18

x86

C1xx.dll

15.0.30729.4987

2,339,656

09-Mar-2010

10:18

x86

C1xx.dll

15.0.30729.4987

2,505,552

09-Mar-2010

10:18

x86

C1xx.dll

15.0.30729.4987

2,891,592

09-Mar-2010

10:18

x64

狀態

Microsoft 已確認這是<套用>一節所列出的 Microsoft 產品的問題。

更多的資訊

若要解決這個錯誤,在編譯器中的,安裝此 hotfix,然後儲存該檔案,加上位元組順序標記。此外,在原始程式檔中加入下列的 「 pragma"指示詞之前的字串常值。

#pragma execution_character_set("utf-8")

注意"Pragma"指示詞設定原始程式檔的轉譯單位,直到 「 pragma"指示詞另一個 「 pragma"指示詞所取代。

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。