2011-10-01 82 views
2

我不能說得很好,所以我只是說出事實。文件輸出到記事本.txt

情況: 我的C++程序輸出擴展ascii字符到文本文件。

問題: 當我用記事本打開我的文本文件時,它顯示錯誤的字符。 (我正在使用Windows XP)

結論: 如果我不得不猜測,我會說記事本正在使用錯誤的編碼保存我的文件。有沒有辦法解決它,所以我的程序將正確的輸出保存到文本文件?

代碼片段:

char box[] = { 
    201, 205, 187, 
    186, 32, 186, 
    200, 205, 188   
}; 

當我outputFile << box[0],我預期的結果是 「╔」。相反,記事本顯示「É」。

預期輸出:

╔═════╗ 
║1. ║ 
║  ║ 
║  ║ 
╚═════╝ 

記事本輸出:

ÉÍÍÍÍÍ» 
º1. º 
º  º 
º  º 
ÈÍÍÍÍͼ 

編輯:確定。我現在明白我的錯誤。記事本使用ANSI編碼。爲什麼當我運行我的程序並將它關閉到屏幕時,它顯示爲「╔」?我正在使用Dev-C++編寫我的程序 - 這是否意味着我正在使用過時的編碼?有什麼方法可以用C++來改變我使用的字符編碼嗎?

+4

[絕對最小每個軟件開發人員絕對肯定必須知道Unicode和字符集(沒有藉口!)](http://www.joelonsoftware.com/articles/Unicode.html) – GSerg

+0

你看到相同的東西用寫字板? –

+6

將您的時間機器設置爲1990年,您將成爲金色 –

回答

4

您在「擴展ASCII」中使用繪製字符的方框已過時。默認情況下,記事本可能使用Latin-1 (ISO-8859-1)編碼,它表示一組不同的字符。

1

這是給你一個「遞歸」的解決方案:

  • 選擇框上方,顯示正確的輸出,並將其複製到剪貼板
  • 打開記事本
  • 將其粘貼到記事本(它會看起來是正確的)
  • 保存記事本文件(選擇Unicode或UTF-8編碼),並對其進行分析,找出你需要寫來獲取輸出
什麼

我敢肯定,你可以從上面得知,要得到這些字符,你必須寫一個Unicode文本文件。

1

更復雜的文本編輯器(如Notepad++)可讓您選擇編碼。 UTF-8會顯示您期望的符號。

+0

記事本還允許您選擇編碼。 – Miguel

+0

保存,是的。但閱讀?怎麼樣? – Dennis

+1

在打開的對話框中,查看打開按鈕(在Win7上)的左側 – Miguel

0

如果你想在編輯器中看到這些線條畫字符,你將需要選擇Windows 終端字體。