用希腊字符替换


substr with Greek characters

我的字符串中有 5 个希腊字符。我在 php 中使用 substr 后,输出类似于 α .它应该是αβγ。关于编码的任何建议?我试过了

标头("内容类型:文本/html;字符集=utf-8");

没有结果。

         <?php
          $string = "αβγδε";
          $thedoc = substr($string, 0, 3); 
          echo $thedoc."<br/>";
        ?>
$thedoc = mb_substr($string, 0, 3, 'UTF-8'); 

您需要使用 mb_substr 而不是 substr ,并且您需要将在此上下文中使用的 PHP 的内部编码设置为 UTF-8。

substr函数基于简单的字符模型,其中每个字符是一个 8 位字节。仅使用 substr($string, 0, 3) ,即可获得字符串的前 3 个字节。UTF-8 编码的希腊字母需要两个字节,因此您可以获得字母 (α) 和"半个"beta,这是其内部表示中的第一个字节,这不是有效的 UTF-8 数据,因此使用"替换字符"(字符级数据错误的指示)显示。

在实践中,您也可以使用 substr($string, 0, 6) ,获取前 6 个字节(3 个字符),但这是一种丑陋的方式,并且依赖于文本专门用于字母,每个字母在 UTF-8 中占用 2 个字节,因此它不适用于例如混合拉丁语和希腊语文本。最好使用可以处理任何 UTF-8 数据的方法。

请尝试此操作,您将解决您的问题。

iconv_substr($string, 0, 1, 'utf-8');

当你写出PHP代码中的字符时,一定要检查PHP文件本身的编码。要在浏览器中显示 UTF-8 字符,还应在 中包含内容类型 META 标记,如下所示:

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

您也可以尝试强制该值为 utf8 字符串

echo utf8_encode( $thedoc ) . '<br />';