以后记得数据库写入数据,都转成utf-8再写
----------------------------------------------------------------------------------------------------------
用易语言写了个爬虫,爬到的东西都写到了数据库中,其中一个字段名为TITLE
写入的时候没注意,爬到字段直接就插入到数据库里了。
.版本 2
.支持库 SqliteDB
sqlitetb.插入 ()
sqlitetb.写字段值 (“TITLE”, title)
sqlitetb.提交 ()
跑了一晚上的库,结果第二天在navicat里打开变成这样了
实际上爬到的网页数据是UTF8的,但为了便于在易语言编辑框中阅读,将网页转码成ANSI了。
写入数据库的时候没有从ANSI转为UTF8,直接写入,所以乱码了。
----------------------------------------------------------------------------------------------------
原因找到,转回来的方法最开始想到的是:逐条读取后重新编码再写回去。
.版本 2
.支持库 SqliteDB
.支持库 CometHttp
.计次循环首 (sqlitetb.取记录个数 (), i)
sqlitetb.跳到 (i)
sqlitetb.读字段值 (“TITLE”, title)
sqlitetb.写字段值 (“TITLE”, 彗星ANSI转UTF8 (title))
sqlitetb.提交 ()
.计次循环尾 ()
结果发现易语言sqlite写数据库的速度其慢无比,几万条数据起码得个把钟头才行,只能想其他办法。
----------------------------------------------------------------------------------------------------
易语言sqlite读取的速度还是可以的,索性把整个数据库导出成用“|”间隔的UTF-8文本文档。
.版本 2
.支持库 SqliteDB
.支持库 CometHttp
.局部变量 i, 整数型
.局部变量 v, 文本型, , , v
.局部变量 id, 整数型, , , id_img
.局部变量 long, 整数型, , , long
.局部变量 uploaddate, 文本型, , , uploaddate
.局部变量 title, 文本型, , , title
.局部变量 author, 文本型, , , author
.局部变量 vid, 文本型, , , vid
.局部变量 s, 文本型, , , s
.局部变量 fff, 文本型
fff = “”
.计次循环首 (sqlitetb.取记录个数 (), i)
sqlitetb.跳到 (i)
sqlitetb.读字段值 (“V”, v)
sqlitetb.读字段值 (“ID”, id)
sqlitetb.读字段值 (“LONG”, long)
sqlitetb.读字段值 (“UPLOADDATE”, uploaddate)
sqlitetb.读字段值 (“TITLE”, title)
sqlitetb.读字段值 (“AUTHOR”, author)
sqlitetb.读字段值 (“VID”, vid)
sqlitetb.读字段值 (“S”, s)
fff = fff + v + “|” + 到文本 (id) + “|” + 到文本 (long) + “|” + uploaddate + “|” + title + “|” + author + “|” + vid + “|” + s + #换行符
.计次循环尾 ()
fff = 彗星ANSI转UTF8 (fff)
写到文件 (“fff.txt”, 到字节集 (fff))
导出的TXT文本文件也就才十几兆大小而已,打开Navicat直接导入
下一步,选择txt文件,【导入编码】选择【 UTF-8】。
【文字间隔符】使用【其他符号】【|】,【文本限定符】【无】
因为txt文件中不包含【字段名称】所以留空【】,【第一个数据行】从【1】开始。
还是用之前已经在Navicat中打开乱码的数据库表POR,作为载入表
【源字段】按着顺序写【f1,f2,f3……】就行了,哪个是【主键】点上金钥匙就好。
选择最后一项【复制】,这样会自动清空原来表中所有的项目,将新的项目写入,至于高级中是否【用空白字符串取代NULL】,如果有需要你就勾上。
这个很快就导入完毕可以使用了。