问题描述
我尝试创建带有特殊字母(如“ä”)的Aztec条形码。 我试图激活UTF-8,但条形码仍只包含十六进制。 有人知道怎么了吗?
var writer = new BarcodeWriter
{
Format = BarcodeFormat.AZTEC,Options = new AztecEncodingOptions
{
Height = Height,Width = Width,}
};
//Hashtable hints = new Hashtable();
//writer.Options.Hints.Add(EncodeHintType.CHARACTER_SET,"utf-8");
//KeyValuePair<EncodeHintType,object> valuePair = new KeyValuePair<EncodeHintType,object>(EncodeHintType.CHARACTER_SET,"UTF-8");
//writer.Options.Hints.Add(valuePair);
writer.Options.Hints.Add(EncodeHintType.DISABLE_ECI,true);
writer.Options.Hints.Add(EncodeHintType.CHARACTER_SET,"UTF-8");
var bitmap = writer.Write(value);
Bitmap img = new Bitmap(bitmap);
谢谢!
解决方法
“abcanfuiwefbieäääää”是您的输入吗? 结果位图给出“abcanfuiwefbieä䤤¤¤¤”,它是被视为latin1的“abcanfuiwefbiebieääääää”的UTF-8编码。
这里发生的是编码器识别并处理了很好的字符集提示,但是解码器忽略了它,并将其解释为latin1。因此,要获取原始文本,您需要自己将latin1转换为UTF8。