2017-10-16 142 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。 –