|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2020/12/31 20:52:12 |
标题: |
FireDAC读取Sqlite出现乱码问题,求教。。。 |
浏览:2075 |
|
加入我的收藏 |
楼主: |
数据库是其它软件的,经过测试发现,那货写入中文字符串的时候,编码貌似是GBK,用FireDAC杂读取,出来都是个乱码。。。
为了方便大哥大姐测试,我上传了个数据库文件上来。
这个文件,是用Sqlite Admin创建的,里面写入了中文。
同样是用FireDAC读取不出中文。。。
----------------------------------------------
- |
作者: |
|
2021/1/1 0:51:20 |
1楼: |
试试如下 fdConn.Params.DriverID := 'SQLite'; fdConn.Params.Database := sqlstr; fdConn.Params.Values['CharacterSet'] := 'utf8'; fdConn.Params.Values['OpenMode'] := 'CreateUTF8'; fdConn.Params.Values['StringFormat'] := 'UniCode';
----------------------------------------------
-
|
作者: |
|
2021/1/2 12:19:36 |
3楼: |
SQLite Admin (beta)
Supported Languages: German English French - [by Stephane Wierzbicki] Portugues (BR) - [by mamede] Spanish - [by Jenaro Centeno Gómez] Dutch - [by Johan Samyn] Simplified Chinese - [by Zuo Weiming] Russian - [by Ormada] Polish - [by Piotr Drozdowski] Italian - [by Paolo Paniga] Hungarian - [by Zsolt] Norwegian - [by Glenn O Larsen] Turkish - [by Ismail Ata KURT] Czech - [by Robert Hroch] Traditional Chinese - [by Ben Su] Danish - [by Morten Skytte] Greek - [by Papadoulas Konstantinos] Catalan - [by Blas López]
http://sqliteadmin.orbmu2k.de/
http://download.orbmu2k.de/download.php?id=19
----------------------------------------------
The higher the degree, the greater the respect given to the humblest!RAD 11.3
|
作者: |
|
2021/1/5 23:46:39 |
4楼: |
CharacterSet 这玩意,貌似对Sqlite无效。另外,我怀疑,本身这库,写入的是个GBK编码的字符串。
----------------------------------------------
-
|
作者: |
|
2021/1/6 9:01:20 |
5楼: |
我觉得没救了,要么自己看看能不能读取出来解码,要么用原来的软件导出后你重新导入。
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?
|
作者: |
|
2021/1/6 9:17:06 |
6楼: |
http://bbs.2ccc.com/topic.asp?topicid=577740 跟这个类似, 反过来,delphi 插入的中文, 别的语言也读成乱码..
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
|
作者: |
|
2021/1/6 10:07:12 |
7楼: |
maybe help you (or not)
-- SQLiteAdmin DB = MyNewDBSQLite3.s3db -- VCL project test -- FireDAC components
procedure TForm1.FormCreate(Sender: TObject); begin Memo1.Lines.Clear; // FDConnection1.Connected := false; FDConnection1.Params.Values['Database'] := 'D:\RADRIOTests\VCL_SQLite_DB_Unicode_Test\MyNewDBSQLite3.s3db'; FDConnection1.Params.Values['OpenMode'] := 'CreateUTF16'; FDConnection1.Params.Values['StringFormat'] := 'Unicode'; end;
Memo1.Lines.Add('Field = Text_Any = ' + FDQuery1.FieldDefs.Items[1].FieldClass.ClassName); == Field = Text_Any = TWideStringField
FDConnection info:
========== Connection definition parameters ========== Database=D:\RADRIOTests\VCL_SQLite_DB_Unicode_Test\MyNewDBSQLite3.s3db StringFormat=Unicode OpenMode=CreateUTF16 DriverID=SQLite ========== FireDAC info ========== Tool = RAD Studio 10.3 FireDAC = 17.0.0 (Build 93731) Platform = Windows 32 bit Defines = FireDAC_NOLOCALE_META;FireDAC_MONITOR ========== Client info ========== Loading driver SQLite ... DLL = <sqlite3_x86.obj statically linked> Client version = 3.28.0 Compile options = DEFAULT_CACHE_SIZE=8000;DEFAULT_FILE_FORMAT=4; DEFAULT_JOURNAL_SIZE_LIMIT=1048576; DEFAULT_PAGE_SIZE=4096;DEFAULT_RECURSIVE_TRIGGERS; ENABLE_COLUMN_METADATA;ENABLE_DBSTAT_VTAB; ENABLE_FTS3;ENABLE_FTS3_PARENTHESIS;ENABLE_FTS4; ENABLE_FTS5;ENABLE_JSON1;ENABLE_RBU;ENABLE_RTREE; ENABLE_STAT4;HAS_CODEC;OMIT_AUTOINIT;TEMP_STORE=2; THREADSAFE=2;USE_URI ========== Session info ========== Current catalog = Current schema = Total changes = 0 Database encoding = UTF8 Encryption mode = <unencrypted> Cache size = 10000
----------------------------------------------
The higher the degree, the greater the respect given to the humblest!RAD 11.3
|
作者: |
|
2021/1/6 11:19:24 |
8楼: |
楼主,你先告诉大家,他应该显示的是什么中文。 否则,你这等于是加密了。 可能数据库的作者保密意思很强。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2021/1/8 0:50:47 |
9楼: |
to sail2000 emailx45
嗯嗯,估计就是这原因,另外还有程序员习惯的问题。
可能早起的软件,本身编码就是ANSI,GBK之类的。并不是Unicode/UTF8之类。
Delphi 前面的版本,不也是这个样子的。。。
写入时,没转成Unicode...也可以说,人家为啥要转,人家写入进去,读取出来正常,就行了。。。
----------------------------------------------
-
|
作者: |
|
2021/1/8 0:54:33 |
10楼: |
to wang_80919 加密个啥嘛。。。其实,简单点就如上面俩大哥发的意思。。。
不同开发工具,向Sqlite里面写入的中文,很可能换个工具,读出来是乱码。。。
FireDAC,不知道有没有办法,解决这种问题。。。
主要是看它,一个是自带,一个是不需要Sqlite3.dll
所以,有点不想放弃它。。。
----------------------------------------------
-
|
|