2017-10-16 111 views
-1

我可以在下面找到链接的相同ASCII字符不同的值:转换扩展的ASCII字符到Latin1的

1. http://www.theasciicode.com.ar/
(在非拉丁格式扩展ASCII)

2. https://www.ascii-code.com/
(示出了在Latin1的格式扩展ASCII)

在第一链路我可以看到一个的值(一个带有尖锐的重音)= 160, 在第二个链接值á(a带有尖锐重音)= 225

类似地,每个值之间存在随机差异,范围从128-255。

我有一个C++应用程序,其中我得到在非拉丁格式(1)的ASCII值,其中我需要在拉丁语值(2)输出。有没有可能有用的公式?请帮忙。由于

+1

“公式”是一个查找表。给我'x',我的桌子给你'y'。 – PaulMcKenzie

+0

什么,我看这里是一个“逻辑的转换”,而不是硬编码值 – user2008585

+1

你可以试试'data.decode(“CP437”)编码(“latin1的”)'。但是,有很多扩展ascii版本,所以不能保证这会起作用。 – ekhumoro

回答

0

第一张表看起来像代码页437,你可以在Windows上找到。

如果你有这个代码页编码字符串,你可以这样对其进行解码:

text = b"your\xa0text".decode("cp437") 

你得到:“yourátext”

要将其转换为ISO Latin1的,你可以写:

latin1 = text.encode("Latin1"). # or "8859-1" 

你得到的字节串:b'your \ xe1text”

注意:一些茶赛马将不会从cp437转换为Latin1。

+0

这是哪一种特定的语言?蟒蛇? – user0042

+0

是的,它是Python。 –

+0

在Windows上的C/C++,你可以使用Win32 API'的MultiByteToWideChar()'和'调用WideCharToMultiByte()'函数的代码页之间的数据转换。在其他平台上(或在Windows上),请使用专用的C库进行Unicode转换,如ICONV或ICU。 –