2009-11-13 73 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