【发布时间】:2014-10-26 11:26:52
【问题描述】:
我对 MySQL 和将数据导入特定表之间的关系有疑问。每当请求表单时,所有包含 unicode 字符的数据都会被转换为其他奇怪的字符(问号)。
到目前为止我尝试过的:
- 设置 MySQL db/table 使用 utf8_croatian_ci
- 将元数据设置为 HTML 以使用 utf-8 编码
- 查询
SET NAMES 'utf8' - 将所有文件设置为通过 UTF-8 编码
- 查询
mysqli_set_charset()(感谢您注意到 HAL9k) - 还添加了:
header("Content-type: text/html; charset=utf-8"); - 尝试编辑
my.ini和php.ini以将默认字符集设置为 UTF-8
字母转换成DB:
-
č, ć被翻译成?, ?(HTML & DB) -
ž被翻译成�(HTML,在数据库中它是真正的字符 'ž' - 未翻译)
我的元数据:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
代码(伪):
$con = mysqli_connect($host, $db_user, $db_pass, $db_name) or die("Error.");
// Spremanje rekorda preko UTF-8 karaktera
mysqli_query($con, "SET NAMES 'utf8'"); // ovo je bolji način :-)
$selekt = "UPDATE proizvodi SET ..
WHERE slug='...'";
不要因为程序风格而讨厌我。 :-) 干杯,谢谢。请提出建议。
【问题讨论】:
-
使用
mysqli::set_charset()而不是SET NAMES ...。 -
更改 php 文件的编码,尝试不带 BOM 的 utf8
-
@HAL9000 哎呀,忘了补充说我已经尝试过了。同样的问题。感谢您的通知,我删除了 mysqli_set_charset() 的编码注释。 Aleks:我试过这样但还是不行。 Notepad++ 首选项已解决,以使它们在新文件上无 BOM 的 UTF8。谢谢!
-
检查 PHP 脚本是否获得好的字符。添加一些反馈,例如:
echo htmlspecialchars($_POST["unicode_variable_name"]); -
确实如此。我刚刚检查过了。回声结果是真实的字符而不是问号。有什么建议吗?这必须取决于数据库本身,对吧?
标签: php mysql sql encoding utf-8