问题标签 [mbstring]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
479 浏览

php - PHP 中“mb_detect_encoding()”的首选字符编码顺序是什么?

作为 . 的第二个参数传递的首选字符编码顺序是什么mb_detect_encoding( )

我问这个是因为某些字符编码与其他字符编码重叠,例如 ASCII 为 UTF(在某些情况下)返回,EUC-CN 为 gb2312,以及 EUC-CN、EUC-JP、EUC-KR、EUC-TW 中的任何一个,以较早出现的为准传递给函数的序列返回简体中文 EUC-CN 兼容字符串。

这是我收集的一些,但我想让列表尽可能全面。

请帮助我更正订单并使此列表尽可能大。

编辑1:

我想做的就是将任何字符串转换为utf8。

编辑2:

考虑到以下建议,我想尽量减少在编码转换中浪费文本的可能性,因为转换后的文本是我的网站唯一依赖的东西。所以,即使我使用的解决方案不是完美的。请您演示最可靠的解决方案吗?

0 投票
3 回答
2461 浏览

php - PHP 字符串函数与 mbstring 函数

我有一个到目前为止只有英文的应用程序。整个模板和数据库的内容编码都是 UTF-8。我现在希望将应用程序国际化/翻译成具有绝对需要 UTF-8 的字符集的语言。

该应用程序使用各种 PHP 字符串函数,例如strlen()strpos()substr()等,我的理解是我应该将这些函数切换为多字节字符串函数,例如mb_strlen()mb_strlen()mb_substr()等,以便正确处理多字节字符。我试图阅读这个主题,但几乎我能找到的所有内容都深入到“编码理论”中,并没有提供一个简单的问题答案:如果我始终使用 UTF-8,我可以从使用strlen()tomb_strlen()并期望事情可以正常工作,例如英语和阿拉伯语,还是我还需要注意什么?

任何见解都将受到欢迎,如果我因我的相对无知而冒犯了一个贴近他们内心的编码的人,我深表歉意。

0 投票
1 回答
313 浏览

php - 如何检查字符串是否可以安全地转换为另一个字符集而不会丢失?

在将字符串从字符集转换为另一个字符集之前,是否有可能知道这种转换是否无损?

例如,如果我尝试将 UTF-8 字符串转换为 latin1,则无法转换的字符将替换为?. 检查?结果字符串以确定转换是否无损显然不是一种选择。

我现在能看到的唯一解决方案是转换回原始字符集,并与原始字符串进行比较:

不过,这只是一个快速而肮脏的方法,有时可能会出现意外行为,我想可能有一种更简洁的方法可以使用mbstringiconv或任何其他库来做到这一点。

0 投票
1 回答
412 浏览

php - 分布式 Web 应用程序的 PHP utf-8 最佳实践和风险

我已经阅读了有关此主题的几篇文章,但我仍然想与社区分享一些疑问。

我想为我开发的应用程序DaDaBIK添加完整的utf-8支持;该应用程序可以与不同的 DBMS(如 MySQL、PostgreSQL、SQLite)一起使用。数据库中使用的字符集可以是 ANY。我不能设置或假设字符集。

我的方法是使用 iconv 函数转换我从 utf-8 中的数据库读取的所有内容,然后在我必须写入数据库时​​将其转换回原始字符集。这将允许我假设我正在使用 utf-8。

您可能知道,问题在于 PHP 本身不支持 utf-8,即使假设使用 mbstring,也有(根据http://www.phpwact.org/php/i18n/utf-8)几个 PHP 函数可能会产生 utf-8 问题并且没有 mbstring 对应关系,例如 PREG 扩展、strcspn、trim、ucfirst、ucwords....

由于我使用了一些外部库,例如 adodb 和 htmLawed,我无法控制所有源代码......在这些库中,有几种使用这些函数的案例......你有什么建议吗?最重要的是,wordpress 等非常流行的应用程序如何处理这个(恕我直言大)问题?我怀疑他们在代码中没有任何“修剪”......他们只是冒险(例如数据损坏)或者有什么我看不到?

非常感谢。

0 投票
5 回答
23080 浏览

php - 确保 PHP 编译时启用了 php_mbstring.dll

我目前在使用 php 的应用程序中遇到错误。这是错误消息

我正在使用第三方库来生成 pdf 文件 (MPDF)。它在我的 loaclhost (windows) 上运行良好,但是当我们将它部署在 linux 服务器上时,它会引发上述错误。

任何人都可以帮助我了解发生了什么以及我该如何解决它。我们的 linux 服务器配置中似乎缺少 php_mbstring.dll。

0 投票
3 回答
8324 浏览

php - 调用未定义函数 FOS\UserBundle\Util\mb_convert_case()

我收到错误

当我尝试加载固定装置时会发生这种情况。

第一步是安装 mbstring.so ext,所以我编译了 php

比成功编译 mbstring ext

并添加

到我的 php.ini 文件。不幸的是,我仍然收到该错误,并且 php -m 没有将 mbstring 显示为加载的扩展名。怎么了?

任何帮助将不胜感激。

PHP 5.4.7,Debian 莱尼

从 php check.php 输出

0 投票
2 回答
1876 浏览

php - PHP 安全性:如何滥用编码?

从这个优秀的“ UTF-8 all way through ”问题中,我读到了这个:

不幸的是,在尝试存储或在任何地方使用它之前,您应该验证每个提交的字符串都是有效的 UTF-8。PHP 的 mb_check_encoding() 可以解决问题,但您必须虔诚地使用它。确实没有办法解决这个问题,因为恶意客户端 可以以他们想要的任何编码提交数据,而且我还没有找到让 PHP 可靠地为您执行此操作的技巧。

现在,我仍在学习编码的怪癖,我想确切地知道恶意客户端可以做什么来滥用编码。一个人能实现什么?有人可以举个例子吗?假设我将用户输入保存到 MySQL 数据库中,或者我通过电子邮件发送,如果我不使用该mb_check_encoding功能,用户怎么会造成伤害?

0 投票
1 回答
138 浏览

php - 子字符串 utf-8 字符,最多 10 个字母数字字符

我在获取此字符串的子字符串时遇到问题:

我只想显示最多第 n 个字符,或者至少不显示损坏/不完整的单词。

起初我试过。

但结果是:

这个词不完整

我也尝试使用正则表达式:

结果:

可以做些什么来得到类似的东西

单词应该是完整的。我可以用 php 中的 mb_ 函数来完成此操作吗?

0 投票
1 回答
2103 浏览

php - 什么时候需要在 PHP 中启用 mbstring?

mbstring 扩展提供对简体中文、繁体中文、韩文和俄文以及日文的增强支持。

我尝试在我的 PHP 页面上显示一个日文字符(我从 www.google.co.jp 复制的),它显示得很好。显示 UTF-32 字符时是否需要使用 mbstring?

编辑:

如何使第二行代码工作?

PS:我已将 PHP 默认字符集更改为 UTF-8。

0 投票
1 回答
6364 浏览

php - mb_convert_case 未定义函数 (Symfony2 FOS/UserBundle)

在我的 Symfony2 应用程序中,我收到一个错误:

致命错误:在第 18 行的 /Applications/MAMP/htdocs/application/vendor/bundles/FOS/UserBundle/Util/Canonicalizer.php 中调用未定义函数 FOS\UserBundle\Util\mb_convert_case()

我正在使用 PHP 5.3.6。

这是我的 PHPInfo,显示 mbstring 已启用:

http://i.stack.imgur.com/FCMDv.png

如果启用了 mbstring,那么为什么找不到 mb_convert_case?