我在Sinatra上运行了一个API。它查询mysql数据库,并以json或xml格式返回数据。我遇到了unicode数据的问题。如果我从控制台查询生产数据库,我将正确获取数据:
persönlichen
然而,在我的API结果中(或者如果我使用mysql2 gem在irb中查询数据库),我得到了这个:
persönlichen
一切都在我的开发盒上游动,这让我在解决问题方面付出了很大的努力。
我已尽我所能确保数据库仅为utf-8(编码,排序规则,客户端和服务器字符集都是utf-8)。我正在使用mysql2驱动程序,据说强制一切都是utf-8。我正在设置:encoding =>我的有效记录连接上的'UTF8'。
我错过了什么?
答案 0 :(得分:2)
我能够解决问题 - 数据未在数据库中正确编码。我使用sql转储文件填充我的数据库 - 我将它添加到顶部,一切都很好:
set names utf8;
create database if not exists `my_db_name` CHARACTER SET utf8 COLLATE utf8_general_ci;