问题标签 [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.
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:
考虑到以下建议,我想尽量减少在编码转换中浪费文本的可能性,因为转换后的文本是我的网站唯一依赖的东西。所以,即使我使用的解决方案不是完美的。请您演示最可靠的解决方案吗?
php - PHP 字符串函数与 mbstring 函数
我有一个到目前为止只有英文的应用程序。整个模板和数据库的内容编码都是 UTF-8。我现在希望将应用程序国际化/翻译成具有绝对需要 UTF-8 的字符集的语言。
该应用程序使用各种 PHP 字符串函数,例如strlen()
、strpos()
、substr()
等,我的理解是我应该将这些函数切换为多字节字符串函数,例如mb_strlen()
、mb_strlen()
、mb_substr()
等,以便正确处理多字节字符。我试图阅读这个主题,但几乎我能找到的所有内容都深入到“编码理论”中,并没有提供一个简单的问题答案:如果我始终使用 UTF-8,我可以从使用strlen()
tomb_strlen()
并期望事情可以正常工作,例如英语和阿拉伯语,还是我还需要注意什么?
任何见解都将受到欢迎,如果我因我的相对无知而冒犯了一个贴近他们内心的编码的人,我深表歉意。
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 等非常流行的应用程序如何处理这个(恕我直言大)问题?我怀疑他们在代码中没有任何“修剪”......他们只是冒险(例如数据损坏)或者有什么我看不到?
非常感谢。
php - 确保 PHP 编译时启用了 php_mbstring.dll
我目前在使用 php 的应用程序中遇到错误。这是错误消息
我正在使用第三方库来生成 pdf 文件 (MPDF)。它在我的 loaclhost (windows) 上运行良好,但是当我们将它部署在 linux 服务器上时,它会引发上述错误。
任何人都可以帮助我了解发生了什么以及我该如何解决它。我们的 linux 服务器配置中似乎缺少 php_mbstring.dll。
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 输出
php - PHP 安全性:如何滥用编码?
从这个优秀的“ UTF-8 all way through ”问题中,我读到了这个:
不幸的是,在尝试存储或在任何地方使用它之前,您应该验证每个提交的字符串都是有效的 UTF-8。PHP 的 mb_check_encoding() 可以解决问题,但您必须虔诚地使用它。确实没有办法解决这个问题,因为恶意客户端 可以以他们想要的任何编码提交数据,而且我还没有找到让 PHP 可靠地为您执行此操作的技巧。
现在,我仍在学习编码的怪癖,我想确切地知道恶意客户端可以做什么来滥用编码。一个人能实现什么?有人可以举个例子吗?假设我将用户输入保存到 MySQL 数据库中,或者我通过电子邮件发送,如果我不使用该mb_check_encoding
功能,用户怎么会造成伤害?
php - 子字符串 utf-8 字符,最多 10 个字母数字字符
我在获取此字符串的子字符串时遇到问题:
我只想显示最多第 n 个字符,或者至少不显示损坏/不完整的单词。
起初我试过。
但结果是:
这个词不完整
我也尝试使用正则表达式:
结果:
可以做些什么来得到类似的东西
单词应该是完整的。我可以用 php 中的 mb_ 函数来完成此操作吗?
php - 什么时候需要在 PHP 中启用 mbstring?
mbstring 扩展提供对简体中文、繁体中文、韩文和俄文以及日文的增强支持。
我尝试在我的 PHP 页面上显示一个日文字符(我从 www.google.co.jp 复制的),它显示得很好。显示 UTF-32 字符时是否需要使用 mbstring?
编辑:
如何使第二行代码工作?
PS:我已将 PHP 默认字符集更改为 UTF-8。
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?