【问题标题】:Character encoding from odbc reader C#来自 odbc 阅读器 C# 的字符编码
【发布时间】:2015-11-07 15:17:26
【问题描述】:

我需要使用 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 编码。

【问题讨论】:

  • 谢谢,但是当我做 charset=utf8;它显示为“JiřÔ -> 更糟。
  • 你的完整连接字符串是什么?
  • 这段代码很可能容易受到sql注入攻击。

标签: c# mysql character-encoding odbc


【解决方案1】:

你应该配置 mysql 会话。 在 SELECT 之前执行 SET NAMES 命令 -

SET NAMES utf8; -- or set encoding you need

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

【讨论】:

    【解决方案2】:

    Jiří in utf8 是十六进制的4A 69 C599 C3AD

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

    Jiřà 是你遇到 Mojibake 的时候。 (在此处搜索。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-02
      • 2011-11-21
      相关资源
      最近更新 更多