为啥我的 View 是 utf8 以及如何将其更改为 latin1

Posted

技术标签:

【中文标题】为啥我的 View 是 utf8 以及如何将其更改为 latin1【英文标题】:Why is my View utf8 and how can I change it to latin1为什么我的 View 是 utf8 以及如何将其更改为 latin1 【发布时间】:2012-02-23 22:11:58 【问题描述】:

我遇到了一个问题,客户端程序需要使用视图,但它需要 latin1 格式的结果。 这是我得到的:

mysql> show global variables like 'character_set%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

mysql> Select CHARACTER_SET_CLIENT, COLLATION_CONNECTION FROM information_schema.VIEWS v;
+----------------------+----------------------+
| CHARACTER_SET_CLIENT | COLLATION_CONNECTION |
+----------------------+----------------------+
| utf8                 | utf8_general_ci      |
+----------------------+----------------------+

【问题讨论】:

你能告诉你数据库、表和视图创建脚本吗? 【参考方案1】:

尝试运行以下命令:

SET character_set_client = latin1;
SET character_set_results = latin1;
SET character_set_connection = latin1;
DROP VIEW your_view;
CREATE VIEW your_view as (
    here_goes_your_view_query);

基本上我们正在重新创建视图。我已经在本地对其进行了测试并且它工作正常,即使在将数据库、表和列设置为默认为 utf8 之后也是如此

【讨论】:

【参考方案2】:

您需要使用以下命令更改连接设置:

    SET character_set_client=latin1
    SET character_set_connection=latin1
    SET character_set_results=latin1

【讨论】:

从我对全局变量的查询中可以看出,它们都已设置为 latin1。 哦,是的,对不起,我读得太快了。你有什么样的问题?您的输出中是否有错误的编码字符? 是的。它们以 utf-8 的形式出现在视图中,我必须(出于业务需求)让它们以 latin1 的形式出现。

以上是关于为啥我的 View 是 utf8 以及如何将其更改为 latin1的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Delphi IBX TWideMemoField 转换 UTF8 字符串中的字节顺序以及如何避免它?

为啥我的标签在 XSLT 转换后展开(以及如何修复)?

为啥我的 IBAction 更改标签文本不起作用?

为啥我的电子表格以 .xlsx 扩展名保存,但在我将其更改为 .xls 之前不会发生?

分配后列表意外更改,这是为啥以及如何防止它?

为啥程序仅在 main 中定义时才给出输出(以及如何更改它)?