无法读取MySQL数据库中的外来字符(Xampp和Ruby on Rails)
目前我正在开发RubyonRails web应用程序(开源软件)。我在使用phpmyadmin和mysql工作台读取表数据中的外来字符时遇到了问题 RoR应用程序正在使用InnoDB类型的数据库。所有的表格都完全使用utf-8和utf8\u general\u ci构建。这一点得到了证实,因为我已经尝试将整个数据库保存为.sql并搜索了拉丁编码。没有任何拉丁编码出来 我的机器版本如下:无法读取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 尝试了几种解决方案
- 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中,并确保将这些行添加到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连接配置中应该做些什么??