2014-01-31 179 views
2

我想在Code 128條形碼中編碼字符串「Quinish」。是否可以在Code 128編碼中包含擴展的ASCII字符? 。在Code 128條形碼中編碼擴展的ASCII字符

我在谷歌上做了一些研究,提示它可以使用FNC4,但我沒有找到如何做到這一點。如果有人能夠用C語言提供解決方案,那將會非常有幫助。

+2

擴展ASCII是一個概念,而不是一個精確定義的東西。請準確指定您的編碼。如果你要求一個圖書館來做到這一點,那麼這就是主題。 –

+0

嘿大衛感謝您的評論,但我只是想知道我們如何使用FNC4來編碼這樣的擴展ASCII字符(特殊字符如Ñ)。我不是在尋找庫,我已經有編碼邏輯編碼字符upto 128個ASCII值。 這裏是維基引用:http://en.wikipedia.org/wiki/Code_128 – Mayuresh

+3

那麼,正如我已經說過的,擴展ASCII是一個概念,而不是一個精確定義的東西。您不能「編碼爲擴展ASCII」。你需要選擇一個實際的編碼。 –

回答

5

通過使用特殊的FNC4功能字符,字節值從128到255的「擴展ASCII」字符確實可以在Code 128編碼中表示。對於一般用途(在打開的應用程序中),這些字符必須屬於ISO-8859-1(Latin1)字符集。

單個FNC4字符用作轉移到下一個字符的擴展字符集,而連續兩個FNC4字符用作鎖存器。其效果是切換受影響字符的8位ASCII值的高位(基本上是加或減128)。

在您的示例「Qui儂」中,字符「Ñ」在缺省ISO-8859-1字符集中由字節值209表示,因此它是128 + 81。 ASCII 81解析爲「Q」,因此您需要序列FNC4 Q來表示「Ñ」。

這個數據的有效代碼128 encodation如下:

[104/START-B] [49/Q] [85/u] [73/i] [100/FNC4] [49/Q] [79/o] [78/n] [69/e] [83/s] [93/check-digit] [106/STOP] 

有些條形碼應用程序和庫將執行基於FNC4擴展字符編碼爲你,如在下面的例子。大多數不但是這些應該讓你直接這樣就可以利用上述技術,如手動驅動的過程中指定一個字符FNC4:Qui{FNC4}Qones

的128碼符號看起來像這樣:

Code 128 containing the word "QuiÑones"

它用的是Online Barcode Generator與下列選項中產生:

Barcode: Code 128 
Contents: Qui^209ones 
Options: parse height=0.5 
+2

FNC4字符類似於Unicode的專用區域碼點。代碼128沒有說明這些字符是什麼。作者和讀者必須同意他們的意思。通常情況下,您可以選擇數字值來對字符進行編碼,這與在定義良好的字符編碼中相同。 「擴展的ASCII」沒有明確定義; 「大部分代碼頁」都不是。無論是使用已建立的字符編碼還是進行編碼,您仍然可以說出它是什麼。 –

+0

關於使用FNC4,不正確。 ISO/IEC 15417§4.3.4.2(d):「FNC4用於表示ISO/IEC 8859-1中規定的擴展字符集(字節值128到255)...如果使用單個FNC4字符,則將值128添加到符號中以下數據字符的ISO/IEC 646值...後續數據字符恢復爲標準ISO/IEC 646集。如果使用了兩個連續的FNC4字符,則將值128添加到所有後續數據字符的ISO/IEC 646值,直到遇到兩個連續的FNC4字符或到達符號的末尾。「 –

+0

關於使用術語」擴展ASCII「,謝謝。我通過放棄對擴展ASCII的隨意引用來改進答案,除非直接引用問題並明確指出Latin1字符集是打開應用程序所必需的。 –

相關問題