2011-12-23 30 views
0
#include <stdio.h> 
#include <iostream> 
#include <locale> 

int main() 
{ 
    const wchar_t *str = L"\u041F\u043E\u0440\u044F\u0434\u043E\u043A"; 
    std::locale::global(std::locale("")); 
    std::wcout << str << std::endl; 
} 

這裏的一個片的代碼作爲輸出在UTF-32 wchar_t的字符串俄語短語:國際UTF-32串輸出到控制檯在Linux中

  • 正確之一:Порядок從運行時在Ubuntu 11.10
  • РџРѕСЂСЏРґРѕРєUTF-8 GNOME終端在Eclipse中試運行如上
  • 45 = B8D8:0B> @在Eclipse在實際的程序(在這裏我甚至不知道誰做什麼,在哪裏,但我想有人確實與現場混亂)
  • ???????如果我不調用語言環境
  • str顯示爲詳細信息:0x400960 Eclipse中的L「\ 320 \ 237 \ 320 \ 276 \ 321 \ 200 \ 321 \ 217 \ 320 \ 264 \ 320 \ 276 \ 320 \ 272」監視窗口
  • 顯示爲ASCII只字節字符在Eclipse內存窗口(並沒有辦法來指定,這是UTF-32字符串)

我相信這是在任何Eclipse控制檯或配置錯誤該程序,因爲,例如,其他人只是在Eclipse中運行我的代碼,他們see正確的output

難道有人可以解釋這種困惑嗎?設置所有塊(OS,gcc,terminal,Eclipse,sources ...)以輸出以UTF-32 wchar_t字符串存儲的國際符號的正確方法是什麼?

而作爲一個側面說明,爲什麼我還在乎這一切的時候,我們有UTF-32,這應該足以知道里面是什麼...

+1

你可以嘗試更新你的「運行配置」>常用>編碼&選擇正確的編碼(「UTF8」似乎在我的情況下做的伎倆)一些細節[here](http://decoding.wordpress.com/ 2010/03/18/eclipse-how-to-change-the-console-output-encoding /) – 2011-12-23 08:10:53

+0

沒有解決所有的問題(實際上還沒有嘗試過解決方案),但看起來像一個很好的問題。 – queen3 2011-12-23 08:33:11

+0

這很好!請儘管給它一個鏡頭。與「運行配置」下的編碼選項類似,在「調試配置」>「通用」>「編碼」下也有一個選項。也許你可以適當地設置兩種配置,看看它是否有幫助 – 2011-12-23 09:31:27

回答

0

原來是其他代碼改語言環境。