当使用Nginx配置Mind (使用类似于proxy_set_header GEOIP_CITY $geoip_city;的东西)时,当城市名称中有重音时(比如Montréal),我会遇到编码问题。
我到处搜索,找不到一个nginx开关来强制utf-8编码。我遗漏了什么?
我试着站在红宝石一边city.force_encoding('iso-8859-1').encode('utf-8'),但没有骰子。
谢谢!
发布于 2015-09-02 18:15:44
虽然它没有文档化,但看上去表示您可以强制Nginx模块使用UTF-8。要使用此方法,我相信您以下列方式加载数据库:
http {
geoip_city GeoLiteCity.dat utf8;
...发布于 2016-08-31 12:13:19
您可以使用utf8_encode()来获得您想要达到的结果。
例如(在php中):
// $city_name = $record->city;
$city_name = utf8_encode($record->city);发布于 2017-08-30 09:25:56
尽管MaxMind提供了一个使用UTF-8作为默认字符集的GeoIPCity API,但GeoListeCity.dat似乎使用了ANSI编码。因为有些地方没有英文翻译,所以可能会造成编码混乱.
费尔南多解决方案正在工作,但万一较新版本的geoLiteCity.dat使用非ISO-8859-1兼容字符集,您还可以确保最终字符串是通过使用mb_convert_encoding编码的UTF-8:
$location->city = mb_convert_encoding($location->city, 'UTF-8');https://stackoverflow.com/questions/32356640
复制相似问题