雜記 › 資源分享 › 庫存標籤要條碼?CODE128 與 EAN-13 怎麼選

庫存標籤要條碼?CODE128 與 EAN-13 怎麼選

我幫一個朋友的小倉庫貼過兩千多個貨位標籤,第一版打完拿掃描槍去掃,十個裡有三個掃不出來,另有一個更難看的問題:他供貨給一家連鎖門市,門市的收銀系統直接拒收,理由是「你這個條碼掃不出商品」。那之前我以為條碼是「把數字畫成黑白條」,做完才明白,能不能用取決於兩件完全不同的事:碼制選得對不對,以及這個編號你有沒有權利自己編。

先問清楚這個碼要給誰掃

這是我從那兩千張標籤裡學到的第一條。只在自家庫房、自家資產台帳裡流轉的碼,怎麼編號沒人管,掃的也是你自己的設備,選碼只看兩件事:要不要帶字母、要不要帶小數點。要進別人零售體系的碼不一樣,它的編號是全域的,收銀系統掃出來的那串數字得能對應到你註冊過的廠商代碼,這種情況下不是選碼制的問題,是先要有合法編號。

我在 條碼產生器 裡能選的也就這三種主流碼制:CODE128、EAN-13、CODE39,條寬 1 到 5 像素、高度 40 到 200 像素可以自己調,前景背景色可選,白邊和條碼下方那行文字也能開關,出來是 PNG。

三種碼制的字元範圍和校驗位

碼制能編什麼字元長度校驗位我那次用它做什麼
CODE128ASCII 32 到 126 的可列印字元,共 95 個可變長度有,按模 103 由編碼器補在結尾貨位號和帶字母的資產編號
EAN-13只有數字 0 到 9固定 13 位有,第 13 位由前 12 位加權算出零售商品包裝上的條碼
CODE39大寫 A 到 Z、數字 0 到 9,加空格和 - . $ / + % 七個符號,共 43 個字元可變長度碼制本身不帶算術校驗位,靠起止符自校驗儀器上的序號,老掃描槍只認它

三行裡最容易被忽略的是 CODE39 那一欄。它沒有內建的算術校驗位,有些掃描槍或系統會要求額外附加一位按模 43 的校驗字元,那是設定項而不是碼制自帶的。CODE39 還有擴展寫法,用小寫和符號要靠成對字元拼,同樣的內容會比 CODE128 長不少。我遇到只有 CODE39 能讀的老設備時,會先確認它有沒有開擴展和校驗,不然打出來的標籤在別處掃不出。

要全字元又要短,CODE128 一般是最佳解,這是我給貨位標籤換碼制的原因:同一個編號,CODE39 的擴展寫法要佔兩倍寬度。

EAN-13 的校驗位手算一遍

我一開始不知道第 13 位是算出來的,編了一串自己按下去,掃槍報錯,還以為是列印問題。算法不複雜,我把過程留下,方便對著核。

拿我隨手擬的一串 12 位數字 690123456789 做例子(這只是練習用的號碼,不是哪個真實商品的註冊號)。從左往右數,第 1、3、5、7、9、11 位相加:6+0+2+4+6+8=26。第 2、4、6、8、10、12 位相加:9+1+3+5+7+9=34,這個和要乘 3,得 102。兩部分合起來 26+102=128,看個位數是 8,用 10 去減得 2,校驗位就是 2,完整條碼是 6901234567892。如果個位正好是 0,校驗位記 0,不是記 10。

再拿一組核對:12 位 123456789012,奇位和 1+3+5+7+9+1=26,偶位和 2+4+6+8+0+2=22,22 乘 3 是 66,26+66=92,個位 2,10 減 2 得 8,所以完整是 1234567890128。兩遍算下來我才信「產生器勾了 EAN-13 就會自動補校驗碼」這件事,前 12 位填錯一個數字,校驗位就不匹配,掃槍直接拒讀——這是保護,不是毛病。

前綴這件事不能自己編

EAN-13 那 13 位不是一個自由數字空間。它按「前綴加廠商代碼、商品項目代碼、校驗位」來分,而前綴這一段要落到 GS1 的組織體系裡,廠商識別代碼需要向對應的編碼組織申請,國內常見的 690 到 699 開頭就屬於這個體系裡分配給國內廠商的號段。沒註冊而自己拼一個 690 開頭的號碼,掃出來是別人的商品,進了零售系統就是撞碼,被拒收是我朋友遇到的最輕的結果。真要走這條路,正確做法是去申請,不是找個產生器湊。

如果只是內部編號,我的建議很直接:別用 EAN-13。它只能放數字、長度還鎖死在 13 位,你要寫「貨架A-第3層」這種帶字母的編號根本放不進去。

能掃出來,靠的是列印而不只是編碼

那三個掃不出來的標籤,問題全在物理層面。條碼讀的是黑白條的寬度,條寬像素乘以印表機的點距就是實際模組寬度:203 dpi 的熱感機一個點約 0.125 毫米,我把條寬設 3 像素,實際約 0.375 毫米;同一張圖換 300 dpi 印,3 像素縮到約 0.254 毫米;600 dpi 只有約 0.127 毫米。熱感列印在細線條上還會往兩邊洇,白條被「吃掉」一點,解碼器就分不出 1 個模組和 2 個模組。我後來把內部標籤的條寬調到 4 像素,重印一次三個全過了。

另外兩條我踩過:一是兩側要留白,也就是靜默區,掃描槍靠這段空白判斷條碼從哪開始,我一開始為省標籤紙把白邊關掉,讀不出來;二是顏色,工具允許改前景和背景色,但常見的掃描槍是紅光光源,紅色在它眼裡幾乎和白色一樣亮,所以紅底、紅條都別試,深淺對比夠強就行,不必非要純黑。

打出來我不靠手感驗收,會拍照上傳 條碼解碼 讀一遍,能把那串數字原樣讀回來才算數。要承載的是一長段文字或者掃碼後要直接跳轉,一維碼就不合適了,那種內容我改用 QR Code 產生器。

常見問題

Q:超市要求我提供條碼,我自己產生一個行不行?

不行。EAN-13 的號段要經 GS1 體系分配,自擬的號碼會和真實商品撞。產生器能算出合法的校驗位,但算不出合法的廠商代碼。

Q:庫房編號裡有字母,該選哪個碼制?

選 CODE128。EAN-13 只能放 13 位純數字,CODE39 能放但只認大寫和七個符號,同樣內容還要佔更寬。

Q:為什麼我的碼列印出來掃不出來?

我遇到過的原因按機率排:條寬太細撐不住列印精度、兩側沒留白邊、放大縮小後線條邊緣發虛、顏色對比在紅光下失效。先把條寬加一檔、白邊打開,再重印一張試。

Q:校驗位算錯了會怎樣?

掃槍通常直接不讀,而不是讀成另一個數,因為校驗位就是用來發現這種錯的。手工填 EAN-13 時前 12 位打錯一個數字,校驗位就對不上。

Q:CODE39 和 CODE128 能混用在同一批標籤上嗎?

能,但要看掃描槍的設定和識別範圍。我的做法是同一個體系裡只用一種,混用帶來的排查成本比省下的那一點寬度大得多。

回到那兩千張標籤。最後內部貨位全部換成 CODE128、條寬 4 像素、白邊打開、打完抽樣解碼驗證;供貨給門市的那批沒有繼續用自編號,而是等廠商代碼批下來才重新印。判斷標準其實很清楚:只在自家流轉,選碼制看字元集和寬度;要出門進別人的收銀系統,先解決編號歸屬,再談產生器。

📎 相關文章

SOS 只有 9 個音,整句字母表要 104 個音:摩斯碼的節奏怎麼算出來 2026-10-21 轉盤上寫「權重 30」是幾成機會?扇區角度、放回與不放回的兩種抽法 2026-10-21 漸層底上的白字為什麼總看不清?把 WCAG 對比度逐個色標算一遍 2026-10-21 老照片放大就發糊?畫質提升能救回多少細節 2026-10-15 拼豆圖紙怎麼做?把照片轉成色卡與網格 2026-10-15