MySQL 导出/导入中特殊字符丢失

2024-02-15

我正在尝试将 MySQL 3.23.58 数据库移动到运行 5.5.19 的其他服务器。

旧的指定了 latin1 编码,据我所知,底层数据确实是 latin1。我尝试了很多事情,主要是:

  • 使用 mysqldump 和 latin1 编码标志从终端导出。
  • 在 vim 中编辑,将“TYPE=InnoDB”更改为“ENGINE=InnoDB”以兼容 MySQL 5。
  • 从终端导入到新服务器。

浏览旧服务器(在 Mac 版 Sequel Pro 或 PC 版 MySQL 查询浏览器中),特殊字符并不总是正确显示,但它们确实存在(查看十六进制的二进制文件)。 (无论如何,它都可以与 PHP Web 应用程序配合使用。)

浏览新服务器时,所有特殊字符似乎都已被问号替换。我知道,如果指定了错误的编码,有时特殊字符会显示为问号(或 �)。但这些似乎是二进制级别上真正的直接编码的 ASCII 问号。特殊字符(主要是弯引号和破折号)在导出/导入中似乎已丢失或损坏。

知道为什么吗?

我知道编码可能会出现很多问题,而且有很多不同的问题。我已经读了好几天(在这里和其他地方)并尝试设置所有正确的字符编码,尝试UTF-8,尝试转换和转换,尝试Sequel Pro的导出/导入(而不是终端)等。但是我很困惑。


很好,看来我们已经缩小了您的问题范围。我发现这个帖子 http://www.unix.com/shell-programming-scripting/175390-removing-92-character.html

如果您的文本编辑器是 vim,那么“”很可能是 扩展 ASCII 字符的十六进制代码。在这种情况下,它是 Hex(92) 或 Oct(222) 或 Dec(146) ,即“右单引号 mark”;不要与“单引号”混淆,后者是 ASCII Dec 代码 39。

从文件中删除所有非 ASCII 字符的一种方法可能是 -

perl -plne 's/[^[:ascii:]]//g' <your_file>

否则,只需在导出的文件中搜索“”和“”并将其替换为适当的字符即可。

[Edit]

我不是 VIM 用户,但这篇文章解决了以下问题替换 智能引号字符 http://aditya.sublucid.com/2008/01/18/replacing-those-pesky-smart-quotes-in-vim/

对于您在文件中看到的每个值,只需执行一个字符串 替换,像这样:

:%s/<93>/\’/g

当然,你不能只在那里输入,所以要把它输入 你在那里使用

CTRL-V x 93

将十六进制 93 插入到位。

在最近从 Excel 导出的 CSV 中,我看到了十六进制 91-97。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL 导出/导入中特殊字符丢失 的相关文章

  • 为什么我在 MySQL 中设置更大的 INT 数据类型长度时没有收到错误消息?

    我对 MySql 中的数据类型长度有点困惑 我阅读了参考手册http dev mysql com doc refman 5 0 en data types html http dev mysql com doc refman 5 0 en
  • 计算 mysql 数据库行数的最佳方法

    在遇到 mysql 查询加载时间慢的问题后 我现在正在寻找计算行数的最佳方法 我曾经愚蠢地使用过mysql num rows 函数来做到这一点 现在意识到这是最糟糕的方法 我实际上正在制作一个分页来用 PHP 制作页面 我找到了几种计算行数
  • 如何在 codeigniter 查询中使用 FIND_IN_SET?

    array array classesID gt 6 this gt db gt select gt from this gt table name gt where array gt order by this gt order by q
  • 在一个后台为MYSQL的网站上集成搜索

    我有一个位置搜索website http www jammulinks com对于一个城市 我们首先收集该城市所有可能类别的数据 如学校 学院 百货商店等 并将其信息存储在单独的表中 因为每个条目除了名称 地址和电话号码外都有不同的详细信息
  • 如何将行变成列?

    我有一个数据库 其中存储分组到项目中的关键字以及与每个关键字相关的数据 然后我显示每个项目的数据网格 每个关键字一行和几列 全部从同一个表 数据 中检索 我有 4 个表 关键字 项目 group keywords 和数据 keywords
  • MySQL 数据库无法在 XAMPP for Mac 上启动

    突然我在 mac 上遇到了这个问题 我无法启动我的 MySQL 数据库 我只能启动 ProFTPD 和 Apache Web Server 这是应用程序日志 Starting all servers Starting MySQL Datab
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver
  • 从 call_log 中获取最大并发通话数

    我需要帮助在 MySQL 5 0 77 中编写一个查询 根据下面所示的数据 办公室一天的通话量 返回并发电话呼叫的峰值数量 我只是想知道一天中任何特定时间同时打电话的人数最多是多少 首先 这是 MySQL 表 CREATE TABLE ca
  • 连接到 OpenShift (Redhat Paas) mysql 实例

    我正在尝试将我的 C 应用程序与 openshift 数据库连接 但我得到了这个例外conn Open Eccezione gt MySql Data MySqlClient MySqlException 0x80004005 Unable
  • 无法在 Zend Framework 中回滚事务

    我在 Zend Framework 中使用以下代码进行事务 但回滚功能不起作用 数据通过 insertSome data 插入数据库 怎么了 db gt beginTransaction try model gt insertSome da
  • 如何删除 MySQL 数据库?

    你可能从我的上一个问题中注意到一个问题引发了更多的问题 在 MySQL 监视器中阅读 MySQL 手册 https stackoverflow com questions 1081399 我的数据库现在无法使用 部分原因是我想破坏东西并且无
  • MySQL - 从数字列表中选择在表的 id 字段中没有对应项的数字

    我有一个数字列表 例如 2 4 5 6 7 我有一个表 foos 带有 foos ID 包括 1 2 3 4 8 9 我想获取我的号码列表 并在我的表的 ID 字段中找到那些没有对应项的号码 实现此目的的一种方法是创建一个表格栏 在 ID
  • Dapper 或 MySql 未找到包含句号“.”的存储过程。

    我有一个简单的 C 控制台 它使用 Dapper ORM 调用本地 MySql 数据库 以执行名为的存储过程users UserCreate 但是 当运行查询时 我收到一个异常 在数据库 用户 中找不到过程或函数 UserCreate Bu
  • Rails 3.1、Ruby 1.9.2-p180 和 UTF-8 问题

    我在使用 UTF 8 字符时遇到一些问题 这是 db seeds rb User create username eml first name last name ck email email protected cdn cgi l ema
  • Mysql带限制的删除语句

    我试图从表中删除行 但出现错误 DELETE FROM chat messages ORDER BY timestamp DESC LIMIT 20 50 我在 50 时收到此错误 您的 SQL 语法有错误 检查与您的 MySQL 服务器版
  • 将IP保存到数据库中

    当用户登录时 我想将他们的 IP 保存在数据库中 我该怎么做呢 MySQL 字段最适合使用哪种类型 获取IP的PHP代码是什么样的 我正在考虑将其用作登录 会话内容的额外安全功能 我正在考虑使用用户现在拥有的 IP 检查用户从数据库登录的
  • MySQL:如何仅获取正值的平均值?

    假设我有 INT 列 并且我使用 1 来表示插入时没有可用数据 我想获得该列中所有 0 或更大值的平均值 这可能吗 Thanks 我忘了提及 我正在与其他 AVG 一起执行此操作 因此从选项卡中选择 avg a avg b avg d 所以
  • 针对约 225 万行的单表选择查询的优化技术?

    我有一个在 InnoDB 引擎上运行的 MySQL 表 名为squares大约有 2 250 000 行 表结构如下 squares square id int 7 unsigned NOT NULL ref coord lat doubl
  • 使用 MYSQL 将 h:mm pm/am 时间格式插入数据库

    我正在尝试将以 h mm am pm 格式写入的时间插入到存储为标准 DATETIME 格式 hh mm ss 的数据库中 但我不知道如何将发布的时间转换为标准格式所以数据库会接受它 这是我到目前为止一直在尝试的 title POST in
  • MySQL 概念:会话与连接

    我对 MySQL 的概念有点困惑 会话与连接 当谈论连接到 MySQL 时 我们使用连接术语 连接池等 然而在 MySQL 在线文档中 http dev mysql com doc refman 4 1 en server system v

随机推荐