2012-05-28 40 views
1

我想移植我們的應用程序(適用於Windows,Linux,Solaris,AIX等),但是我遇到了很多地區問題。此代碼適用於所有平臺,除了OSX:osx locale bug?

#define SIZE 1000 

int main(int argc, const char * argv[]) 
{  
    char dest[SIZE]; 
    wchar_t *dptr = L"árvíztűrőtükörfúrógép"; 
    size_t count = SIZE; 
    size_t length; 

    setlocale(LC_CTYPE, ""); 

    length = wcstombs(dest, dptr, count); 
    printf("%d characters were converted.\n", length); 
    printf("The converted string is \"%s\"\n\n", dest); 
} 

請幫我傢伙,打印在ISO-8859-2編碼終端的文本!

非常感謝!

+0

也許你還應該描述它是如何失敗的?轉換呼叫後你會得到什麼? – unwind

+0

當終端編碼爲UTF-8且LC_CTYPE爲「C」時,一切正常,但終端編碼爲中歐(ISO拉丁2)且LC_CTYPE爲「hu_HU.ISO8859-2」時,我得到:-1個字符被轉換。 轉換後的字符串是「árvízt」。它不符合「ő」和「ű」字符。 – user1333856

回答

3

Apple Macintosh不使用ISO 8859-1或ISO 8859-2編碼。相反,Apple使用專有的代碼表,即西歐的MacRoman和東歐語言的MacCentralEuropean。 Macintosh上的WWW瀏覽器(Netscape Navigator 2及以上版本和Microsoft Internet Explorer 2.1)自動執行從互聯網上使用的ISO 8859編碼到Macintosh原生字符集的重新編碼。

從這裏摘自:http://nl.ijs.si/gnusl/cee/iso8859-2.html

這裏有您需要什麼:http://en.wikipedia.org/wiki/Mac_OS_Roman

而這裏的UTF-8 < - >的MacRoman轉換代碼:http://alienryderflex.com/utf-8/

有隻爲 「U」 的修飾語和「o」(插在這些字母后面)以獲得「ő」和「ű」字符。

看到這裏的表http://www.alanwood.net/demos/macroman.html

「˝」,代碼= 0xFD,U + 02DD, 「雙銳音符」,格修飾字母

(在行動 「不同凡想」)

+0

謝謝,但MacRoman和Latin 1最大的問題是它們不包含「ő」和「ű」字符。 – user1333856

+0

你錯過了:雙尖銳口音是一個單獨的符號。控制檯的「文本」渲染器「將其附加到前一封信中。 –

+0

這與DOS –