【问题标题】:Exporting data from SQL Server 2014 in Lao Language [Encoding/Collation issue]以老挝语从 SQL Server 2014 导出数据 [编码/排序问题]
【发布时间】:2016-12-14 23:48:21
【问题描述】:

我获得了一个在老挝使用的数据库的非常大的备份 (.BAK),我在 SQL Server 2014 Express(本地)服务器上进行了还原。这是一个有很多列的数据库,其中包含老挝文本。当使用数据库的人通过客户端应用程序(某种泰国会计程序)访问它时,当他们将显示字体设置为 Saysettha(一种带有老挝字符的 Unicode 字体)时,他们可以看到所有老挝数据都正确显示。

但是,我正在尝试从 SSMS 导出表中的数据(通过简单的文本或 csv 文件,因为导出过程需要简单且可重复)并且数据永远不会正确显示。即使我在 SSMS 中进行表查询也不行。

我知道这可能是编码/整理的问题。这些列存储在VARCHAR 列中。我尝试将它们转换为NVARCHAR 列,但这并不能解决问题。我还尝试将列排序为Lao排序规则(恢复备份后服务器排序规则设置为Thai_CI_AS);

SSMS trial

我尝试将输出表保存为具有不同编码的 CSV 和 TXT 文件,但是当我在例如Notepad++ 我看到了同样的错误字符。

很遗憾,由于客户端软件没有在我的笔记本电脑上运行,因此我没有文本应该是什么样子的示例。

理想情况下,我能够以 UTF-8 编码导出列。

【问题讨论】:

    标签: sql-server encoding character-encoding export collation


    【解决方案1】:

    我的理解是老挝文字一般以UTF-8编码、UTF-16编码或者Code page 1133编码存储。

    当查看应用程序使用与存储数据时相同的编码时,它看起来没问题。 不幸的是,有时查看应用程序并没有确切地知道使用了什么编码,所以它“有帮助地”尝试guess,有时它猜错了。 通常,错误的猜测对于观看显示器的人来说是显而易见的——这些字母甚至不是来自正确的语言。

    更糟糕的是,当您告诉应用程序从数据库中导出数据,而不是简单地导出文本的原始字节时,应用程序可能会“有帮助地”将数据转换为不同的编码。 如果应用程序恰好知道数据库中数据的实际编码,那么在导出时转换为 UTF-16 或 UTF-8 效果很好;否则导出的数据通常会损坏且无法使用。

    有时最难解决的问题是系统实际运行正常的问题,但我(错误地)认为存在问题。有时发生这种情况是因为我用来查看问题的工具存在缺陷。 如果您在 Notepad++ 中看到的大部分是老挝字符,或者您可以更改 Notepad++ 中的编码直到您看到大部分是老挝字符,那么我怀疑您的文本或 csv 文件中的数据以及 Notepad++ guessed 或您使用 @987654324 设置的编码@ 可能是正确的。

    有什么方法可以让您查看数据是否真正被数据库正确存储、处理、导出等,并被客户端应用程序正确显示,但记事本或 SSMS 中的呈现故障是否不正确弄乱一些重音符号?

    【讨论】:

    • 这是我需要的帮助。我已经能够通过批量导出导出数据,我使用了字符格式(“-c”)并明确提到了包含代码页 1133 的 Microsoft 代码页 874(通过添加“-C 874”)。虽然在 ASCII 中,我可以读取导出的 CSV/TXT 文件。现在可以导出到 UTF-8。
    猜你喜欢
    • 1970-01-01
    • 2016-08-16
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    相关资源
    最近更新 更多