【问题标题】:csv to php: accented letters?csv 到 php:重音字母?
【发布时间】:2014-04-14 16:20:05
【问题描述】:

我有一个页面,其中包含将.csv 表转换为html 的php 部分。但是,我对重音字母有疑问。实际上,即使页面设置了这些也不会显示

meta http-equiv="Content-Type" content="text/html; charset=utf-8"

csv 文件编码为utf-8。

php 未处理的其他部分显示重音字母没有问题。 我应该在 php 中添加一个字符串来转换它们吗?

非常感谢,

斯特凡诺

【问题讨论】:

  • 字母显示时是否没有重音,或者根本不显示?
  • 你能给出一个包含重音字母的csv示例行吗? + 你的代码来解析它?

标签: php csv utf-8 non-ascii-characters


【解决方案1】:

您可以试试这个,如果您的问题得到解决,请告诉我:

$string = (isUtf8($string))? $string : utf8_encode($string);

function isUtf8 ($string)
{
    //regex modified from http://www.w3.org/International/questions/qa-forms-utf-8.en.php
    return preg_match('%^(?:
          [\x09\x0A\x0D\x20-\x7E]           # ASCII
        | [\xC2-\xDF][\x80-\xBF]            # non-overlong 2-byte
        |  \xE0[\xA0-\xBF][\x80-\xBF]       # excluding overlongs
        | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
        |  \xED[\x80-\x9F][\x80-\xBF]       # excluding surrogates
        |  \xF0[\x90-\xBF][\x80-\xBF]{2}    # planes 1-3
        | [\xF1-\xF3][\x80-\xBF]{3}         # planes 4-15
        |  \xF4[\x80-\x8F][\x80-\xBF]{2}    # plane 16
    )*$%xs', $string); 
}

【讨论】:

  • 这是什么意思?您如何确定文件是 utf8 还是 iso-8859-1 编码的?您是否从某处复制并插入此处?
  • 这是解决相同问题的第一个级别。你可以看到w3.org
  • 如果是这样,您可能已将此信息的来源添加到您的答案中。但是,我想指出的主要问题是您在这里使用utf8_encode()。 utf8_encode() 能够从 iso-8859-1 转码为 utf8 而不是更多。这意味着您不能使用utf8_encode() 将具有任意编码的字符串转码为utf8
【解决方案2】:

你可以把所有的回报放在下面的 PHP 函数中:

string utf8_encode ( string $data )

您可以毫无问题地包含所有文本。

字体:http://www.php.net/manual/en/function.utf8-encode.php

【讨论】:

  • 不,你不能。它可能会破坏数据。请阅读您链接的文档。
  • ...utf8_encode() 不能用于从 iso-8859-1 转码为 utf8。 (仅此而已)
猜你喜欢
  • 1970-01-01
  • 2013-07-01
  • 1970-01-01
  • 2016-04-02
  • 2013-10-28
  • 2016-05-05
  • 1970-01-01
  • 1970-01-01
  • 2019-12-11
相关资源
最近更新 更多