问候,我会陈述我的情况:
这是我为转换数据库所做的bash脚本.假设我有MS Access x.MDB
mdb-schema "x.mdb" | perl -wpe 's%^DROP TABLE %DROP TABLE IF EXISTS %i;
s%(Memo/Hyperlink|DateTime( \(Short\))?)%TEXT%i;
s%(Boolean|Byte|Byte|Numeric|Replication ID|(\w+ )?Integer)%INTEGER%i;
s%(BINARY|OLE|Unknown ([0-9a-fx]+)?)%BLOB%i;
s%\s*\(\d+\)\s*(,?[ \t]*)$%${1}%;' | sqlite3 > x.db
for i in $(mdb-tables "x.mdb"); do echo $i; (
echo "BEGIN TRANSACTION;";
MDB_JET3_CHARSET="WINDOWS-1256" mdb-export -R ";\n" -I "x.mdb" $i;
echo "END TRANSACTION;" ) | sqlite3 "x.db"; done
Run Code Online (Sandbox Code Playgroud)
我试图将MDB_JET3_CHARSET更改为WINDOWS-1256,cp1256,WINDOWS-1251,cp1251,UTF-8.当我浏览数据时,有些会在数据中产生不同的结果,但仍然没有任何意义.
谢谢你,对不起我的英语不好
我正在使用Delphi功能
StringCodePage
Run Code Online (Sandbox Code Playgroud)
我在COM函数返回的字符串上调用它(Acrobat Annotation getContents - 请参阅我的其他帖子),它返回0.
什么是0?安思?
CharacterSet在这里有什么关系:
http://msdn.microsoft.com/en-us/library/ms709353
(VS.85).aspx和ascii编码:http:
//msdn.microsoft.com/en-us/library /system.text.asciiencoding.getbytes(VS.71).aspx
我正在寻找与Delphi7中使用的.Net Encoding.GetEncoding方法相当的Win32.
我想要实现的是将代码页ID(即:28592)转换为代码页名称(在这种情况下为iso-8859-2).
我发现了一个名为GetCPInfoEx的Win32函数,但它返回一个长的CodePage名称,我需要一个简短的名称,就像本页列出的那样:(参见名称列) http://msdn.microsoft.com/en-我们/库/ system.text.encoding.aspx
谢谢!
我有一个支持CodePage 1001阿拉伯语的Star Micronics TSP,如何使用C#将UTF-8转换为该特定代码页?
更新:我发现CodePage 864与打印机兼容,我尝试发送十六进制值,我得到了正确的字符,
myPrinter.PrintNormal(PrinterStation.Receipt, "\xFE8D");Run Code Online (Sandbox Code Playgroud)
我尝试以下将字符串转换为codePage 864:
Encoding enc = Encoding.GetEncoding(864);
byte[] arr = enc.GetBytes("??????");Run Code Online (Sandbox Code Playgroud)
我在编码之后得到的字节arr值值{63,63,63,63,63,63}是错误的,甚至字节数也是错误的,因为它是一个双字节字符.
我尝试使用dll库绘制文本,该库只有ANSI版本封装的窗口ANSI apis的接口,但我需要使用utf-8存储字符串数据.我不想使用MultiByte/WideChar函数转换字符串,所以我想要一种方法来改变我的应用程序中的CP_ACP,这样我就可以将字符串数据输入到ANSI apis中.谢谢.
ps:我不更改系统默认代码页.
☺:
>>> bytes('?','ibm437')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.3/encodings/cp437.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character '\u263a' in position 0: character maps to <undefined>
Run Code Online (Sandbox Code Playgroud)
与é相反,它起作用:
>>> bytes('é','ibm437')
b'\x82'
Run Code Online (Sandbox Code Playgroud)
我希望☺能把我带回来b'\x01'.我怎么能这样呢?
我开始使用 Inno Setup,但 INI 文件编码存在一些问题。
\n我想将用户输入保存在 INI 文件中,并且该输入可以包含重音符号。
我使用 Inno Setup Unicode,我的 setupScript.iss 是 UTF-8 编码的,这是我的代码(一部分):
\n\n[INI]\nFilename: "{app}\\www\\conf\\config.ini"; Section: "Settings"; Key: "ca.plafondAnnuel"; String: "{code:GetUser|Plafond}"\nFilename: "{app}\\www\\conf\\config.ini"; Section: "Settings"; Key: "app.siren"; String: "{code:GetUser|Siren}"\nFilename: "{app}\\www\\conf\\config.ini"; Section: "Settings"; Key: "app.adresse"; String: "{code:GetUser|Adresse}"\n\n\n[Code]\nvar\n UserPage: TInputQueryWizardPage;\n ExamplePage : TInputOptionWizardPage;\n ImmatriculationPage : TInputOptionWizardPage;\n FakeElemIndex: Integer;\n FakeElem: TCustomEdit;\n AdresseTextarea: TNewMemo;\n\nprocedure InitializeWizard;\nbegin\n UserPage := CreateInputQueryPage(wpWelcome,\n \'Configuration de l\'\'application\', \'\',\n \'Configurez ici votre application. Une fois install\xc3\xa9e, vous pourrez modifier ces valeurs.\');\n\n UserPage.Add(\'Siren :\', False);\n UserPage.Add(\'Plafond annuel (utilis\xc3\xa9 …Run Code Online (Sandbox Code Playgroud) 问题
当我想在Python解释器中输入 Unicode字符时出现问题(为简单起见,我在示例中使用了a-umlaut,但我首先遇到了这个用于Farsi字符).每当我将python与chcp 65001代码页一起使用,然后尝试输入一个Unicode字符时,Python就会退出而没有任何错误.
我花了好几天试图解决这个问题无济于事.但是今天,我在python网站上发现了一个帖子,另一个在MySQL上发现了一个线程,另一个在Lua用户身上发现了这个突然退出的问题,尽管没有任何解决方案,有些说这chcp 65001本身就是破坏的.
一劳永逸地知道这个问题是与chcp设计有关还是有可能的解决方法.
重现错误
chcp 65001
Python 3.X:
Python shell
print('ä')
结果:它只是退出shell
然而,这是有效的python.exe -c "print('ä')"
,也是这样的:print('\u00e4')
结果:ä
在Luajit2.0.4中
print('ä')
结果:它只是退出shell
但这有效: print('\xc3\xa4')
到目前为止,我已经提出了这个观察结果:
所以, 这不是一个Python的错误和我们不能在Windows命令提示符或任何其包装像Conemu,Cmder的CLI程序直接使用Unicode字符(我用Cmder能够看到和在Windows中使用Unicode字符shell和我这样做没有任何问题).它是否正确?
我正在使用该Flutter包esc_pos_printer 1.5.0打印到热敏打印机。如果我打印拉丁字符,一切正常。我尝试过使用多语言代码页,但在尝试打印泰语字符时总是失败。我需要能够用英语、泰语、缅甸语、高棉语和越南语打印。此软件包中所有可用的代码页似乎都不支持非拉丁亚洲语言。这对我和其他许多人来说都是一个令人惊叹的事情。
II 向打印机发送 ESC 命令以更改代码页,然后按预期打印泰文和拉丁字符的新代码页。但是,当我尝试打印泰语字符时,我的应用程序崩溃了。
\n\n我从调试器中收到此错误:
\n\nE/flutter (29402): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: Invalid argument (string): Contains invalid characters.: "\xe0\xb8\xa2\xe0\xb8\xb4\xe0\xb8\x99\xe0\xb8\x94\xe0\xb8\xb5\xe0\xb8\x95\xe0\xb9\x89\xe0\xb8\xad\xe0\xb8\x99\xe0\xb8\xa3\xe0\xb8\xb1\xe0\xb8\x9a"\nE/flutter (29402): #0 _UnicodeSubsetEncoder.convert (dart:convert/ascii.dart:88:9)\nE/flutter (29402): #1 Latin1Codec.encode (dart:convert/latin1.dart:42:46)\nRun Code Online (Sandbox Code Playgroud)\n\n这是我的代码:
\n\nvoid _printReceipt(BuildContext context) {\n\n String ip = \'192.168.1.100\'; \n\n Printer.connect(ip, port: 9100).then((printer) {\n\n printer.sendRaw([27, 116, 255]);\n\n printer.printCodeTable();\n\n printer.println(\'Welcome\');\n\n printer.println(\'\xe0\xb8\xa2\xe0\xb8\xb4\xe0\xb8\x99\xe0\xb8\x94\xe0\xb8\xb5\xe0\xb8\x95\xe0\xb9\x89\xe0\xb8\xad\xe0\xb8\x99\xe0\xb8\xa3\xe0\xb8\xb1\xe0\xb8\x9a\');\n\n printer.cut();\n printer.disconnect();\n}\n);\n}\nRun Code Online (Sandbox Code Playgroud)\n\n编辑:我尝试将字符串编码为字节并像这样打印
\n\n_bytes = utf8.encode("\xe0\xb8\xa2\xe0\xb8\xb4\xe0\xb8\x99\xe0\xb8\x94\xe0\xb8\xb5\xe0\xb8\x95\xe0\xb9\x89\xe0\xb8\xad\xe0\xb8\x99\xe0\xb8\xa3\xe0\xb8\xb1\xe0\xb8\x9a");\n\nprinter.sendRaw(_bytes);\nRun Code Online (Sandbox Code Playgroud)\n\n但我得到了这个
\n\n\n\n我使用了下面建议的软件包,该软件包适用于泰语。我的 ESC/POS 打印机支持泰语代码页 96 和 255。96 人做错了,但 255 人完成了工作。底部对齐不匹配是因为打印泰语字符需要 3 …