丹麦字符替换为问号

时间:2013-04-04 15:05:20

标签: php character-encoding

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

...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中获得的响应。有没有办法解决这个问题?

5 个答案:

答案 0 :(得分:4)

您可以使用

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>

还要记住它还取决于此数据的来源。检查数据库的编码是否已从数据库中删除。

答案 1 :(得分:4)

阅读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);

答案 2 :(得分:4)

避免此类问题的最佳方法是,在整个网站上使用UTF-8,这意味着:

  1. 将PHP文件本身编码为UTF-8,这由编辑器/ IDE完成。
  2. 将元标记添加到页面,例如HTML5的<meta charset="UTF-8">
  3. 也许最重要的一点:在进行查询之前将数据库连接对象的字符集设置为UTF-8,对于mysqli,您可以调用$mysqli->set_charset('utf8')
  4. 当您遵循这些要点时,您将永远不必在不同编码之间转换任何数据。您可以在这篇小文UTF-8 for PHP and MySQL中找到更多信息和示例。

答案 3 :(得分:2)

检查输入输出编码。在大多数情况下,为两者选择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" />

答案 4 :(得分:1)

您是否尝试过如下所示调整标题?我遇到了同样的问题,但是这样可以解决问题

<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" />