我想从这个丹麦语字符串中删除问号。
...mest i betydningen moralsk ford�rvelse eller bestikkelighed, men ogs� i...
我尝试了utf8_encode()
,它返回以下内容:
...mest i betydningen moralsk ford�rvelse eller bestikkelighed, men ogs� i...
第一个字符串是我在web服务中以XML形式获得的响应。我有办法解决这个问题吗?
可以使用
header('Content-type: text/html; charset=utf-8');
将您的页面中的字符编码设置为UTF-8。
除了确保告诉浏览器您正在使用UTF-8之外,还可以在代码中添加以下内容:
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<!-- rest of code here -->
</head>
还要记住,它还取决于该数据来自何时。检查数据库的编码,如果它是从数据库中提取的
读取XML文件的encoding
属性,并使用该编码将其转换为您的网站使用的编码。如果没有编码属性,默认为UTF-8。如果这些步骤产生的编码与您的网站使用的编码相同,则不需要转换。
$encoding_read_from_xml = "ISO-8859-1";
$encoding_my_website_uses = "UTF-8";
$xml_content = mb_convert_encoding($xml_content, $encoding_my_website_uses, $encoding_read_from_xml);
避免这种问题的最好方法是,在整个网站使用UTF-8,这意味着:
- 将PHP文件本身编码为UTF-8,这是由你的编辑器/IDE完成的。
- 为页面添加meta标签,例如HTML5的
<meta charset="UTF-8">
。 - 也许最重要的一点是:在进行查询之前将数据库连接对象的字符集设置为UTF-8,对于mysqli,您可以调用
$mysqli->set_charset('utf8')
。
当您遵循这些点时,您将永远不必在不同编码之间转换任何数据。在这篇关于PHP和MySQL的UTF-8的小文章中可以找到更多信息和示例。
检查输入和输出编码。在大多数情况下,两者都选择UTF-8是最好的方法。
如果您的输入是ISO-8859-1,使用utf8_encode()
将其编码为UTF-8。如果已经是UTF-8,再次调用utf8_encode()
会把事情搞砸。
要指定输出为UTF-8,在PHP中使用header('Content-type: text/html; charset=utf-8');
或在HTML中使用<meta charset="UTF-8" />
。
你试过像下面这样调整你的标题吗?,我有同样的问题,但这清除的东西
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />