php - 变音符号和 mb_substr 的问题

标签 php unicode substr multibyte

我正在使用 mb_substr 函数对带有变音符号的 unicode 字符串进行切片,但它的工作原理与我使用简单的 substr 函数一样。它将 unicode 字符分成两半,显示带问号的菱形。

例如

echo mb_substr('ááááá', 0, 5); //Displays áá�

可能出了什么问题?

最佳答案

如果我不将编码指定为 mb_substr 的最后一个参数,我会遇到同样的问题: 至少在我的服务器上,它默认为 ISO-8859-1


但是,如果我将编码正确设置为 UTF-8,它就可以正常工作:

echo mb_substr('ááááá', 0, 5, 'UTF-8');

在浏览器中正确显示:

ááááá


参见 mb_substr (引用,强调我的):

string mb_substr  ( string $str  , int $start  [, 
    int $length  [, string $encoding  ]] )

The encoding parameter is the character encoding. If it is omitted, the internal character encoding value will be used.

关于php - 变音符号和 mb_substr 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2071232/

相关文章:

html - 关于晦涩难懂的希腊字符的 Unicode/HTML 问题

java - 从扫描仪/控制台读取日语字符和字符串

jsp - 如何在 Servlet 中启用读取非 ascii 字符

regex - 特定字符后的 Oracle 子串

php - 刷新页面并更改 1 个 $_GET 变量

php - Ionic 应用程序因 PHP 脚本而中断

php - 我应该如何在 magento 模块中包含外部 php 文件?

php - 检索接下来的 15 个 mysql 字段,即使它们的 ID 不是连续的

php - html <object> 大小以适应对象的内容

sql - 如何使用 SQL CONCAT/SUBSTR?