丹麦字符被问号代替


Danish characters replaced by question mark

我想从这个丹麦语字符串中删除问号。

...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,这意味着:

  1. 将PHP文件本身编码为UTF-8,这是由你的编辑器/IDE完成的。
  2. 为页面添加meta标签,例如HTML5的<meta charset="UTF-8">
  3. 也许最重要的一点是:在进行查询之前将数据库连接对象的字符集设置为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" />