我在PHP中使用这些代码来执行反向地理编码[从纬度,经度获取地址]:
<?php
$lon = 100.753;
$lat = 13.69362;
$addr = getAddress($lat,$lon);
echo "Address: ".$addr;
function getAddress($RG_Lat,$RG_Lon)
{
$json = "http://nominatim.openstreetmap.org/reverse?format=json&lat=".$RG_Lat."&lon=".$RG_Lon."&zoom=27&addressdetails=1";
$jsonfile = file_get_contents($json);
$RG_array = json_decode($jsonfile,true);
foreach ($RG_array as $name => $value)
{
if($name == "display_name")
{
$RG_address = $value;
break;
}
}
return $RG_address;
}
?>
结果是这样的字符串:
Short term parking, ท่าà¸à¸²à¸à¸²à¸¨à¸¢à¸²à¸™à¸ªà¸¸à¸§à¸£à¸£à¸“ภูมิ, สมุทรปราà¸à¸²à¸£, จังหวัดสมุทรปราà¸à¸²à¸£, ราชà¸à¸²à¸“าจัà¸à¸£à¹„ทย
我将此字符串保存到mysql数据库中,并使用字段类型存储,这是utf8_general_ci。
我的问题是如何在从数据库中取出后,在网上的泰语字符中正确显示此字符串?
仅供参考,Thai Character的实际地址是这样的:
Short term parking, ท่าอากาศยานสุวรรณภูมิ, Samut Prakan, Samut Prakan Province, Thailand
谢谢。
答案 0 :(得分:1)
似乎你首先存储了错误的字符串,因为你没有正确解码它。如果您查看query result in your browser,可以看到结果包含unicode转义序列,如 \ u0e17 \ u0e48 \ u0e32 \ u0e2d 。必须首先解码这些序列。如果您将它们输入到http://rishida.net/tools/conversion/等网络转换器中,您将开始看到正确的字符。在在数据库中存储字符串之前,您必须执行类似的转换。