如何在sqlite控制台中正确显示中文字符?

it_*_*ure 2 sqlite

以下是utf-8格式的示例csv文件,可以在win7的记事本中打开,中文字符显示正确,请下载.
http://pan.baidu.com/s/1sj0ia4H

打开cmd,然后设置chcp 650001.

C:\Users\pengsir>sqlite3  e:\\test.db   
SQLite version 3.8.4.3 2014-04-03 16:53:12  
Enter ".help" for usage hints.
sqlite> create table ipo(name TEXT,method TEXT);
sqlite> .separator ","
sqlite> .import  "e:\\tmp.csv"  ipo
sqlite> select * from ipo;
000001,公开招募
000002,申请表抽签é™é¢è®¤è´­
000004,定å‘å‘行
000005,é“¶è¡Œå‚¨è“„å­˜å•æ–¹å¼
000006,申请表抽签é™é¢è®¤è´­
000007,自办å‘行
000008,自办å‘行
000009,定å‘å‘行
000010,定å‘å‘行
000011,申请表抽签等é¢è®¤è´­
sqlite>
Run Code Online (Sandbox Code Playgroud)

为什么相同的sqlite命令可以在sqlitemanager中正确显示?
如何设置在sqlite控制台中显示中文字符?

在此输入图像描述

在pysqlite3中,它可以在python控制台中正确显示.

>>> import sqlite3  
>>> con=sqlite3.connect("e:\\test.db")   
>>> cur=con.cursor()   
>>> cur.execute("select * from ipo;")  
<sqlite3.Cursor object at 0x01751720>  
>>> print(cur.fetchall())   
[('000001', '????'), ('000002', '?????????'), ('000004', '????'   
), ('000005', '????????'), ('000006', '?????????'), ('000007',   
'????'), ('000008', '????'), ('000009', '????'), ('000010', '???   
?'), ('000011', '?????????')]   
>>>   
Run Code Online (Sandbox Code Playgroud)

Fra*_*ini 5

此问题隐藏了命令提示符窗口如何 显示字符,而不是sqlite3如何 打印输出;

作为一个简单的演示,我们绝对排除 sqlite3并通过type命令查看文件:

让我们看看在其他不同的操作系统中会发生什么,例如在OSX中: <img rel="> ISO-8859-1 对应(Windows latino 1),windows等效代码页设置:chcp 819 <img rel="> UTF8 对应Unicode(UTF-8),windows等效代码页设置:chcp 65001

Windows中也会出现相同的行为:使用命令chcp检查和/或设置当前的代码页

<img rel=">

注意:这是意大利Windows XP的屏幕截图,您可以看到仍然没有运气!:-(,在这种情况下,原因在于command prompt properties我的"Windows XP"框中可配置的可用字体泄漏 :

我希望这不是你的"Windows 7"盒子的情况(但如果是的话,请留下评论,以便在答案的这一部分更具体)...当问题切换到"可用字体"时,将安装其他语言支持,仍然需要通过以下方式强制UTF-8 chcp 65001:

<img rel=">

如何获得正确的字体

按照我在ITA WinXP SP2上获得结果的步骤列表,如上面的屏幕截图所示:

步骤1在计算机上安装东亚语言文件

讲座链接:在您的计算机上安装东亚语言文件

总之,这两个选项都已经过检查 在此输入图像描述 在"高级标签"中,我选择了中文: 在此输入图像描述

步骤2在终端 /"命令窗口"中从光栅切换到中文字体

在此输入图像描述

额外步骤3(可选)检查记事本中的字体

记事本对于某些字体检查很有用,例如打开temp.csv并使用字体但要注意:在命令窗口中可以使用字体的必要条件

在此输入图像描述