2011-04-10 64 views
0

如何将字符串的字符编码更改为UTF-8?我正在对python程序进行一些execv调用,但python会返回字符串中的某些字符。我不知道这是一个python问题或c问题,但我想如果我可以更改在c编码的字符串,然后将其传递给python,它应该做的伎俩。那我该怎么做?如何将字符串编码更改为utf 8中的C

谢谢。

+1

向我们展示一些代码,并告诉我们您是否使用Python 2或Python 3. – 2011-04-10 20:10:03

+1

如何获取这些字符串?你有没有尝试从python转换它们:http://docs.python.org/howto/unicode.html。你还在运行什么平台,以及你用什么打印字符串? – 2011-04-10 20:19:41

回答

3

C作为一种语言不会促进字符串编码。一个C字符串只是一个以空字符结尾的字符序列(在大多数系统上是8位有符号整数)。

宽字符串(字符类型为wchar_t,通常为16位整数)也可用于保存较大的字符值;然而,C标准库函数和数据类型再次没有意识到任何字符串编码的概念。

您的问题的答案是确保您传入Python的字符串编码为UTF-8。

但是,为了帮助您完成任何详细的功能,您必须提供有关您的字符串当前如何形成,它们包含的内容以及如何构建exec的参数列表的更多信息。

3

有没有这样的事情字符编码中C.

一个char*可以保存任何数据,你如何解释字符是你。例如,printf通常会将字符转储为标准输出,并且如果您的控制台将这些字符解释为UFT8,则它们将如此显示。

如果你想在C端不同的编码之间转换,你可以看看ICU

如果您想在Python端的编码之间进行转换,请参阅http://docs.python.org/howto/unicode.html

+0

定义“原样”。 – orlp 2011-04-10 20:15:51

+0

@nightcracker:技术上这是实现定义的。 – 2011-04-10 20:17:59

+0

没错,因此我的评论:) – orlp 2011-04-11 00:12:56