Maxmind Geoip城市编码问题



当配置Max Mind与Nginx(使用类似proxy_set_header GEOIP_CITY $geoip_city;的东西)时,我得到编码问题与城市名称时,它有口音(如montr)。

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

我试着在ruby那边city.force_encoding('iso-8859-1').encode('utf-8'),但是没有骰子。

谢谢!

虽然没有记录,但似乎可以强制Nginx模块使用UTF-8。要使用它,我相信您可以通过以下方式加载数据库:

http {
    geoip_city            GeoLiteCity.dat  utf8;
    ...

您可以使用utf8_encode()来获得您想要实现的结果。

例如(php中):

// $city_name = $record->city; 
$city_name = utf8_encode($record->city);

尽管MaxMind提供了一个使用UTF-8作为默认字符集的GeoIPCity API,但似乎GeoListeCity.dat使用ANSI编码。由于有些地方没有英文翻译,可能会导致编码混乱…

Fernando解决方案是有效的,但是如果新版本的geoLiteCity.dat使用非ISO-8859-1兼容的字符集,您也可以确保最终字符串是UTF-8编码的。例如,使用mb_convert_encoding()(仍在PHP中):

$location->city = mb_convert_encoding($location->city, 'UTF-8');

相关内容

  • 没有找到相关文章

最新更新