标签: codepages

MS Access*.MDB转换为MySQL或SQLite,数据编码问题

问候,我会陈述我的情况:

  • 我在linux UBUNTU
  • 我有几个Jet3 .MDB(MS Acess Database),每个大约500MB,其中数据以cp1256/WINDOWS-1256编码
  • 我按照这篇文章制作了sqlite数据库来进行转换http://cltb.ojuba.org/en/articles/mdb2sqlite.

这是我为转换数据库所做的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.当我浏览数据时,有些会在数据中产生不同的结果,但仍然没有任何意义.

谢谢你,对不起我的英语不好

linux sqlite ms-access encoding codepages

5
推荐指数
1
解决办法
2151
查看次数

什么是代码页0?

我正在使用Delphi功能

StringCodePage
Run Code Online (Sandbox Code Playgroud)

我在COM函数返回的字符串上调用它(Acrobat Annotation getContents - 请参阅我的其他帖子),它返回0.

什么是0?安思?

delphi unicode delphi-2009 character-encoding codepages

4
推荐指数
1
解决办法
3418
查看次数


CodePage ID到CodePage名称:Delphi中的GetEncoding等效?

我正在寻找与Delphi7中使用的.Net Encoding.GetEncoding方法相当的Win32.

我想要实现的是将代码页ID(即:28592)转换为代码页名称(在这种情况下为iso-8859-2).

我发现了一个名为GetCPInfoEx的Win32函数,但它返回一个长的CodePage名称,我需要一个简短的名称,就像本页列出的那样:(参见名称列) http://msdn.microsoft.com/en-我们/库/ system.text.encoding.aspx

谢谢!

.net delphi winapi encoding codepages

4
推荐指数
1
解决办法
5988
查看次数

如何将UTF-8阿拉伯字母转换为CodePage 1001?

我有一个支持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}是错误的,甚至字节数也是错误的,因为它是一个双字节字符.

.net c# encoding character-encoding codepages

4
推荐指数
1
解决办法
4244
查看次数

如何在应用程序中更改Windows ANSI apis的CP_ACP(0)?

我尝试使用dll库绘制文本,该库只有ANSI版本封装的窗口ANSI apis的接口,但我需要使用utf-8存储字符串数据.我不想使用MultiByte/WideChar函数转换字符串,所以我想要一种方法来改变我的应用程序中的CP_ACP,这样我就可以将字符串数据输入到ANSI apis中.谢谢.

ps:我不更改系统默认代码页.

c++ unicode winapi utf-8 codepages

4
推荐指数
2
解决办法
4077
查看次数

编码☺为IBM-437失败,而其他有效字符如é成功

☺:

>>> 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'.我怎么能这样呢?

代码页437的图像.

python encoding codepages python-3.x

4
推荐指数
1
解决办法
1125
查看次数

在 Inno Setup 中以 UTF-8 而不是 ANSI 保存 INI 文件

我开始使用 Inno Setup,但 INI 文件编码存在一些问题。
\n我想将用户输入保存在 INI 文件中,并且该输入可以包含重音符号。

\n\n

我使用 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)

ini encoding inno-setup utf-8 codepages

4
推荐指数
1
解决办法
6005
查看次数

chcp 65001代码页导致程序终止,没有任何错误

问题
当我想在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')

到目前为止,我已经提出了这个观察结果:

  1. 使用命令提示符直接输出有效.
  2. 基于Unicode,基于十六进制的角色等效于该角色.

所以, 这不是一个Python的错误我们不能在Windows命令提示符或任何其包装像Conemu,Cmder的CLI程序直接使用Unicode字符(我用Cmder能够看到和在Windows中使用Unicode字符shell和我这样做没有任何问题).它是否正确?

python windows unicode cmd codepages

4
推荐指数
1
解决办法
2073
查看次数

如何从 Flutter 将亚洲语言打印到热敏打印机?

我正在使用该Flutteresc_pos_printer 1.5.0打印到热敏打印机。如果我打印拉丁字符,一切正常。我尝试过使用多语言代码页,但在尝试打印泰语字符时总是失败。我需要能够用英语、泰语、缅甸语、高棉语和越南语打印。此软件包中所有可用的代码页似乎都不支持非拉丁亚洲语言。这对我和其他许多人来说都是一个令人惊叹的事情。

\n\n

II 向打印机发送 ESC 命令以更改代码页,然后按预期打印泰文和拉丁字符的新代码页。但是,当我尝试打印泰语字符时,我的应用程序崩溃了。

\n\n

我从调试器中收到此错误:

\n\n
E/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)\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我的代码:

\n\n
void _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}\n
Run 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);\n
Run Code Online (Sandbox Code Playgroud)\n\n

但我得到了这个

\n\n

上述命令的结果

\n\n

我使用了下面建议的软件包,该软件包适用于泰语。我的 ESC/POS 打印机支持泰语代码页 96 和 255。96 人做错了,但 255 人完成了工作。底部对齐不匹配是因为打印泰语字符需要 3 …

thermal-printer codepages flutter

4
推荐指数
1
解决办法
2万
查看次数