使用Nginx配置Max Mind时(使用proxy_set_header GEOIP_CITY $geoip_city;
之类的东西),当城市名称中包含重音时(如蒙特利尔),我会收到城市名称的编码问题。
我到处搜索,我找不到强制utf-8编码的nginx开关。我错过了什么?
我试图在红宝石方面city.force_encoding('iso-8859-1').encode('utf-8')
,但没有骰子。
谢谢!
答案 0 :(得分:8)
虽然未记录,it appears您可以强制Nginx模块使用UTF-8。要使用它,我相信您以下列方式加载数据库:
http {
geoip_city GeoLiteCity.dat utf8;
...
答案 1 :(得分:2)
You can use utf8_encode()
to get the results that you are trying to achieve.
For example(in php):
// $city_name = $record->city;
$city_name = utf8_encode($record->city);
答案 2 :(得分:0)
尽管MaxMind提供了一个使用UTF-8作为默认字符集的GeoIPCity API,但看起来GeoListeCity.dat使用ANSI编码。由于某些地方没有英文翻译,可能会导致编码混乱......
Fernando解决方案正在运行,但是为了防止更新版本的geoLiteCity.dat使用非ISO-8859-1兼容的字符集,您还可以确保使用mb_convert_encoding
对最终字符串进行UTF-8编码:< / p>
$location->city = mb_convert_encoding($location->city, 'UTF-8');