我正在开发一个以当地语言提供信息的本地网站。在我的MySQL数据库中,有一个名为pageContent的表,它有一个名为" text"的列。那"文字"列类型为文本,排序规则为utf8_sinhala_ci
在MySQL中,它通常显示字体:
但是当我把它带到PHP页面并回显该值时,它会显示??????????
之类的问号。
但如果我硬编码并回显,那么它也会在PHP页面中正常显示。
当我从数据库中获取值时,我感觉出了问题。但我找不到错误。 我也试过以下代码。
mysql_query ("set collation_connection='utf8_sinhala_ci'");
$result = mysqli_query($this->connecDB,"SELECT * FROM pageContent");
但这不起作用。
答案 0 :(得分:3)
当我从数据库中获取值时,我感觉出了问题。但 我无法找到错误。我也试过以下代码。
您需要确保从连接,数据库到表的整个链都是UTF8清理。我对a similar question here有详细的解答。
但在您的情况下,请检查实际的MySQL服务器my.cnf
文件。以下将整个链设置为UTF-8:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
立即查看您的代码:
mysql_query("set collation_connection='utf8_sinhala_ci'");
$result = mysqli_query($this->connecDB,"SELECT * FROM pageContent");
在一行中,您正在调用mysql_query
,而下一行则调用mysqli_query
。但这些是不应该一起使用的冲突方法。它应该像mysqli_query
一样:
mysqli_query($this->connecDB, "SET collation_connection='utf8_sinhala_ci'");
$result = mysqli_query($this->connecDB,"SELECT * FROM pageContent");
请注意我在mysqli_query($this->connecDB,…
之前设置SET collation_connection='utf8_sinhala_ci'
的方式。这将在您用于$result
的同一连接上发送查询。或许你可以试试这个:
mysqli_query($this->connecDB, "SET NAMES 'utf8'");
$result = mysqli_query($this->connecDB, "SELECT * FROM pageContent");
答案 1 :(得分:1)
确保您自己的PHP文件使用与数据库相同的编码(UTF8)。这导致了我传递的错误。
如果这没有帮助,一个丑陋的解决方案是将输出转换为utf8_decode()
。
答案 2 :(得分:0)
所以在我的情况下,我曾尝试更改Meteor.methods({
'testwsdl' () {
var url = 'http://www.webservicex.com/CurrencyConvertor.asmx?wsdl';
var args = {
FromCurrency: 'USD',
ToCurrency: 'INR'
};
try {
var client = Soap.createClient(url);
var result = client.ConversionRate(args);
console.log(result);
} catch (err) {
if (err.error === 'soap-creation') {
console.log('SOAP Client creation failed');
} else if (err.error === 'soap-method') {
console.log('SOAP Method call failed');
}
}
return result;
}
});
对于mysql的排序规则,并且必须将其更改为utf8mb4_unicode_ci
。
然后粘贴:
uft8_general_ci
在我执行SELECT命令之前。
这是我从db中读取的代码:
mysqli_set_charset( $con, 'utf8');
它就像一个魅力。祝一切顺利。上面的代码可以用于读取chineese,俄语或阿拉伯语或任何包含此类数据的mysql数据库表列中的国际语言。