Maxmind Geoip城市编码问题

时间:2015-09-02 14:59:41

标签: ruby nginx geoip maxmind

使用Nginx配置Max Mind时(使用proxy_set_header GEOIP_CITY $geoip_city;之类的东西),当城市名称中包含重音时(如蒙特利尔),我会收到城市名称的编码问题。

我到处搜索,我找不到强制utf-8编码的nginx开关。我错过了什么?

我试图在红宝石方面city.force_encoding('iso-8859-1').encode('utf-8'),但没有骰子。

谢谢!

3 个答案:

答案 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');