问题
我的本地计算机上有数据存储在包含来自世界各地的字母(阿拉伯语,中文,俄语,基本拉丁语等)的文件中。然后我使用Java将所有这些文件上传到mySQL数据中表
现在我的网站使用javascript来获取用户的搜索参数并将其发送到php。 Php然后查询SQL表并获得响应。然后将该响应发送回JS以显示在网页上。
我的问题是目前我的返回结果的外来字符。我正确地看到了一些信息,但随后一些外国字符被'?'取代。这是一个例子:
This is what I want to see * د افغانستان بانک ۲ دوی افغانی ۱۳۸۳
This is what is being displayed on the webpage * د افغا�?ستا�? با�?ک ۲ د�?�? افغا�?�? ۱۳۸۳
您可以看到某些字符是正确的,而其他字符已被问号替换。
我知道数据已正确存储在SQL表中,因为我可以使用Java成功下载该数据。我也知道问题不在于网络端的Javascript,因为我在我的php代码中添加了一行来附加包含正确字符的假的附加查询结果。
$response[] = ' Afghanistan د افغانستان بانک ۲ دوی افغانی ۱۳۸۳';
这是唯一的"结果"在网页上正确显示。
以下是我尝试做的工作。因为我已经知道数据必须从php获取SQL查询结果中被破坏,所以我专注于尝试修复它。
//mysqli_set_charset($connection, "latin1"); //utf8 || latin1 ||big5 ||cp850 || latin2
评论是我尝试过的所有编码版本。唯一成功的编码是latin1(默认)。它返回带有问号的结果。所有其他人都回归绝对的胡言乱语,如:
//د اÙغاÙستا٠باÙÚ© Û² دÙÛ Ø§ÙغاÙÛ Û±Û³Û¸Û³
//which should be: د افغانستان بانک ۲ دوی افغانی ۱۳۸۳
从同一个php脚本我也使用php SQL" INSERT INTO"上传外国字符。声明。当我使用Java访问表时,我能够成功地删除这些完整的字符。
问题
如何获取此PHP代码以返回正确的结果?
我很丢失,如果你们对此有任何了解,我会非常感激。非常感谢你!
答案 0 :(得分:0)
在php和MySQL中都使用utf-8。您可以使用...
转换php字符串编码 $str = mb_convert_encoding($response, "UTF-8");
在mysql中要么将整个表字符集作为" utf-general - *"或只是专栏。在建立连接之后,使用以下SQL
设置传输编码 SET NAMES utf8
在各地保持一致非常重要。