无法读取MySQL数据库中的外来字符(Xampp和Ruby on Rails)

无法读取MySQL数据库中的外来字符(Xampp和Ruby on Rails),mysql,ruby-on-rails,Mysql,Ruby On Rails,目前我正在开发RubyonRails web应用程序(开源软件)。我在使用phpmyadmin和mysql工作台读取表数据中的外来字符时遇到了问题 RoR应用程序正在使用InnoDB类型的数据库。所有的表格都完全使用utf-8和utf8\u general\u ci构建。这一点得到了证实,因为我已经尝试将整个数据库保存为.sql并搜索了拉丁编码。没有任何拉丁编码出来 我的机器版本如下: php 5.4、mysql 5.5.36 rails 2.3.8、ruby 1.8.7 尝试了几种解决方案

目前我正在开发RubyonRails web应用程序(开源软件)。我在使用phpmyadmin和mysql工作台读取表数据中的外来字符时遇到了问题

RoR应用程序正在使用InnoDB类型的数据库。所有的表格都完全使用utf-8和utf8\u general\u ci构建。这一点得到了证实,因为我已经尝试将整个数据库保存为.sql并搜索了拉丁编码。没有任何拉丁编码出来

我的机器版本如下:

  • php 5.4、mysql 5.5.36
  • rails 2.3.8、ruby 1.8.7
尝试了几种解决方案,包括:

  • 试图在development.rb中添加“encoding:utf8”rakedb:create“没有问题,但是当使用gem安装插件时是有问题的。错误为“找不到数据库适配器”。我搜索了错误并检查了my development.rb,其中适配器确实正确,代码中的所有格式也都正确

  • 已尝试在evironment.rb中添加encoding_internal::encoding_utf8、encoding_external::encoding_utf8

  • 试图将服务器连接排序规则(phpmyadmin中的登录页)从utf8mb4_general_ci更改为utf8_general_ci,但出现“loading”(加载)消息,即继续挂起。即使在Xampp控制台中重新启动mysql,它似乎也从未改变过

  • 应用程序的理想环境是rails 2.3.8和ruby 1.8.7,因此我无法升级它们中的任何一个

我确实点击了phpmyadmin中的“变量”选项卡,但不知道该更改哪个部分。为此,我想知道我们是否必须将所有非utf8,例如拉丁语、二进制等更改为utf8…换句话说,使所有设置仅包含utf8

不需要的垃圾字符是一些像这样的“ØØØÙÙÙ¾而不是预期的外国字符。预期的外来字符在视图(web浏览器)中正确显示,但在phpmyadmin中不能正确显示

我对mysql、phpmyadmin和RoR配置非常陌生。请帮忙

谢谢

编辑:
我还注意到,如果我以预期的字符上传数据,它将显示在数据库中(这是我希望看到的字符)。

此问题的解决方案是将phpMyAdmin中服务器的所有变量配置到utf8中,并确保将这些行添加到Xampp文件夹中mysql文件夹下的my.ini中

在[mysqld]行之后添加:

字符集服务器=utf8

跳过字符集客户端握手


重新启动服务器并重新加载页面

当你说“预期的外来字符在视图中正确显示”时,你是在谈论Rails应用程序视图吗?如果是这样,则表明它们正确地存储在数据库中,并正确地从数据库加载到rails中。是这样吗?@MaxWilliams它在视图中呈现得非常完美。例如,在视图中,有一些表单提示用户输入数据。数据可以是非英语(外国)和英语字符。当表单被接受并显示回用户时,用户可以完美地看到所有字符(包括外来字符)。只有当我查看它时,它才会在数据库中显示为乱码。另外,当我尝试以csv形式上传这些数据时,我可以在数据库中完美地查看这些数据。更新:问题在于应用程序本身。@MaxWilliams续。从上面看,外来字符在数据库中存储为utf-8编码。它们在应用程序中显示时被解码。这意味着在创建数据库时,我必须显式地将数据库设置为utf8。但是在创建数据库时,我们使用Ruby命令rake db:create。如果我们显式地使用SQL脚本创建db,那么这是否意味着不应该使用rake db:create?对不起,如果这是个愚蠢的问题。我只是混淆了必须同时显式创建db。检查了数据库的默认字符集-正确的排序规则和字符集。。。也许在mysql连接配置中应该做些什么??