1

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

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

4

5 回答 5

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>

另请记住,它还取决于此数据的来源。如果它是从数据库中提取的,请检查数据库的编码。

于 2013-04-04T15:09:01.447 回答
4

读取encodingXML 文件的属性并使用该编码将其转换为您的网站正在使用的编码。如果没有 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);
于 2013-04-05T12:36:49.403 回答
4

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

  1. 将 PHP 文件本身编码为 UTF-8,这由您的编辑器/IDE 完成。
  2. 将元标记添加到页面,例如<meta charset="UTF-8">HTML5。
  3. 也许最重要的一点:在进行查询之前将数据库连接对象的字符集设置为 UTF-8,对于 mysqli,您可以调用$mysqli->set_charset('utf8').

当您遵循这些要点时,您将永远不必在不同编码之间转换任何数据。您可以在这篇小文章UTF-8 for PHP and MySQL中找到更多信息和示例。

于 2013-04-05T13:59:31.223 回答
2

检查您的输入输出编码。在大多数情况下,为两者选择 UTF-8 是最好的方法。

如果您的输入采用 ISO-8859-1 格式,请使用utf8_encode()将其编码为 UTF-8。如果它已经是 UTF-8,utf8_encode()再次调用会搞砸。

要将输出指定为 UTF-8,请header('Content-type: text/html; charset=utf-8');在 PHP 或<meta charset="UTF-8" />HTML 中使用。

于 2013-04-04T15:11:58.890 回答
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" /> 
于 2013-04-04T15:07:42.493 回答