2013-10-07 95 views
1

我有一個打印格式頁面,它使用十六進制值表示擴展ASCII字符(類似於IBM code page 437中的字符)。我正在使用這個table作爲參考。我對格式頁面沒有發言權,所以這不能改變。將兩位十六進制代碼轉換爲Unicode編碼

此打印格式頁面用於我的Android應用程序,以便在將相關數據發送到打印機時將相關數據放在正確的位置。最終結果應該看起來像發票。

我在Java中表示某些ASCII字符時遇到了麻煩。例如,從上表中可以看出字符201,205和187.當按照這個順序組合時,它們來自我的數據表的一個很好的邊界。

在Java中,我試圖從十六進制轉換爲ASCII這樣的:

String hex = "D5"; //this is just for example 
int n = Integer.parseInt(hex, 16); //this should return a value of 213 
char c = (char)n; 

「C」最終被一些古怪的看着字符是不是我的本意。我現在意識到這是因爲Java正在使用Windows-1252/CP-1252 standard

我認爲解決方案將從兩位數的十六進制值轉換爲相應的Unicode值,但無法弄清楚如何。任何幫助,將不勝感激。

+0

D5十六進制= 213,而不是201 – ajb

回答

0

爲什麼你想要多走一英里?

private static final char TOP_LEFT = '╔'; 
private static final char HORIZONTAL = '═'; 
private static final char TOP_RIGHT = '╗'; 

,只是使用這些......但要注意,不同的字體可能代表這些不同...

+0

假設是不同的格式將使用不同的十六進制值來表示它們的擴展ASCII對應。這對我來說似乎是一個硬編碼的解決方案。 您是如何將這些ASCII字符表示爲字符串的? – Fam

+0

@ F.Ali如果它使用**不同的字符代碼**,那麼不管你做什麼,它都不會代表你想要的字符。 「D5」將與我的解決方案一樣硬編碼...順便說一下,您可以通過Alt + ppeterka

+0

D5只是一個例子...程序收到的十六進制值可以是任何東西。 – Fam

相關問題