Most barcode readers do not support Unicode. Barcode readers connected to a USB or a keyboard port are able to supply only the characters available on the keyboard. This is because the barcode readers act much like keyboards. Most Unicode characters require additional processing through uniscribe before they can be rendered on the screen. Even Windows XP fails to provide complete uniscribe for most languages. Simple barcode readers definitely cannot process Unicode directly. However, we can always encode Unicode, or any other special characters, into simple formats. Then we can decode them once we have read the data in our application. Of course, that is the problem––if we encode, we have to decode, and the client application has to be able to decode accordingly.
My favorite method is URLEncodedFormat() because it is so simple. It converts the Unicode string "你好" into %E4%BD%A0%E5%A5%BD, which will go perfectly into a barcode. I can simply use URLDecode() to decode back again once it has been read. The disadvantage of this method is that it needs to be processed by ColdFusion. If your barcode is read by some other application, this method may not work.
Barcode applications generally prefer to convert special characters and Unicode into Decimal Points, such as "你好" into 你好. Most displaying applications, including browsers, are capable of decoding those decimal points back to a representative character without any extra work. I created this function to convert special characters and Unicode into decimal points.