来自 odbc reader C# 的字符编码

Character encoding from odbc reader C#

我需要使用 C# 和 ODBC 阅读 MySQL 中的一些专栏。一切正常,但我的语言中的字符像 ř(不知道其他人,但我相信会有更多)。它们在最终字符串中显示为“?”。

这是我的代码:

string sql = "SELECT uzivatelske_jmeno,jmeno,prijmeni FROM zamestnanci WHERE id_user = " + id_user;
OdbcCommand cmd = new OdbcCommand(sql, dbKontrolConn);
OdbcDataReader dbReader = cmd.ExecuteReader();

while (dbReader.Read())
{
    uz_jmeno = dbReader["uzivatelske_jmeno"].ToString();
    jmeno = dbReader["jmeno"].ToString();
    prijmeni = dbReader["prijmeni"].ToString();
}

字符串 jmeno 应该是 "Jiří" ,但它是 "Ji?í" 。有人可以帮我吗?

MySQL 数据库编码为 utf8_unicode_ci。

您应该配置 mysql 会话。 在 SELECT -

之前执行 SET NAMES 命令
SET NAMES utf8; -- or set encoding you need

或者阅读关于MySQL ODBC 驱动程序的文档并直接在连接字符串中设置它,在这种情况下它将在连接打开时默认设置。

Jiří 在 utf8 中是十六进制 4A 69 C599 C3AD.

Ji?í -- 目标列的 CHARACTER SET 不包含预期的字符(错误)。

JiÅ™Ã就是遇到Mojibake的时候。 (在此处搜索。)