2009-11-13 39 views
1

任何人都可以幫助我將數據從unicode(16位)轉換爲7位ascii在C++中?unicode(16位)數據轉換爲7位ascii

+1

你是否需要像映射ñ(U + 00F1)到「普通」n的花式東西? – MSalters 2009-11-13 09:19:38

+0

它應該如何映射?用ASCII表示的unicode字符應該做什麼? – jalf 2009-11-13 13:07:02

回答

5

您可以將unicode字符0..127映射到ASCII集。對於其他字符,沒有7位ASCII等效。你想用這些做什麼?

3

C++語言本身沒有處理這種轉換的東西。您必須改用RTL/API函數。例如,如果您的應用程序在Windows平臺上運行,則它可以使用Win32 API WideCharToMultiByte()函數。如果你想要更便攜的東西,看看GNU的iconv庫。

或者,您可以簡單地手動執行轉換。 Unicode UTF-16非常容易通過手工解碼,並且從那裏值0-127是ASCII值。

+0

Thanx很多4回答 – dweep 2009-11-13 08:41:25

+0

由於目標是ASCII,你不需要麻煩轉換UTF16,只需拖放所有字符127. – 2012-06-16 09:44:19

2

想要將雙字節的Unicode字符轉換爲utf7,這會爲您提供可以用ascii字符集表示的字符(並避免由不能處理最高位集的字符的古董系統所造成的亂碼)。請注意,這會將多字節字符拆分爲幾個字符(如果以ascii讀取)。

示例代碼可以在ibiblio.org(來自快速谷歌搜索)中找到。未知許可證。

+1

使用UTF-8而不是UTF-7。所有ASCII字符都以UTF-8格式表示,並且每個字符不使用多個字節。對於UTF-7也不能這麼說,因爲一些ASCII字符是保留的並且需要編碼。另外,UTF-7比UTF-8更復雜,因爲它爲需要編碼的任何字符合並了UTF-16和Base64的修改版本。 UTF-8不做任何這樣的事情。 – 2009-11-13 08:57:10

+1

是的,utf-8是首選,但原始問題意味着他想要可以用7位表示的字符。 – sisve 2009-11-13 17:02:15

+0

這正是UTF-8爲ASCII字符所做的。 – 2012-06-16 17:31:07