问题标签 [multibyte-functions]
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 - 替换 preg_match_all 的多字节函数?
我正在寻找一个多字节函数来替换preg_match_all()
. 我需要一个能给我一个匹配字符串数组的$matches
函数,比如来自preg_match()
. 该功能mb_ereg_match()
似乎没有这样做 - 它只给我一个布尔值,指示是否有任何匹配。
查看 mb_* 功能页面,我没有看到任何替代preg_match()
. 我用什么?
编辑我是个白痴。我最初发布了这个问题,要求替换preg_match
,当然是ereg_match
。然而,这两个都只返回第一个结果。我想要的是替换preg_match_all
,它返回所有匹配文本。但无论如何,正如 hakre 指出的那样,u
修饰符在我的情况下适用于。preg_match_all
php - 我在字符串上使用 php 的 mb_substr() 后出现奇怪的字符
我正在使用 PHP(5.3.5,Ubuntu)开发一个网站,所有内容都是西班牙语。当文本不适合为其指定的空间时,我想剪切文本。我在要执行此操作的 php 文件中有以下元标记:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />.
文本来自 MySQL 数据库,其中 charset 为latin1和排序规则 latin1_spanish_ci。我正在尝试使用 mb_substr() 函数剪切文本。但它不能正常工作。例如,假设我想将Short Psicodélico 剪切为Short Psicodéli,函数将是:
mb_substr('Short Psicodélico', 0, 15, 'ISO-8859-1');
但结果是这样的:Short Psicode&ea。带有变音符号的 e 被转换为&ea,我不知道为什么。我认为这与字符编码有关,但我不知道具体如何。如果我不使用此功能,字符会按应有的方式显示,而不是Short Psicode&ea它显示Short Psicodelico。
php - mb_convert_encoding,启用 mbstring 时未定义的函数
我有一台运行 PHP 5.3.8 和 Apache2 / MySQL 的服务器(Ubuntu 11.10 x64)。我目前正在做一个项目,我需要进行一些特定的字符编码,但我发现没有一个多字节(mb_* 函数)在工作。
但是,当我查看 phpinfo() 时,我看到启用了多字节支持。
我已经尝试过 apt-get install php5-mbstring、php-mbstring、php-multibyte 等,但似乎都没有。
谁能指出我正确的方向?提前致谢!
编辑:通过重新编译 PHP 来修复它(这是我最初想避免的最后手段)
./configure --enable-mbstring
奇怪的是,phpinfo() 已经显示它已启用。我不知道为什么它以前不起作用:/
python - 如何在 Python 中处理多字节字符串
PHP中有多字节字符串函数来处理多字节字符串(例如:CJK脚本)。例如,我想通过len
在python中使用函数来计算多字节字符串中有多少个字母,但它返回的结果不准确(即这个字符串中的字节数)
PHP中有没有类似mb_strlen的包或函数?
php - 如何使用 preg_match 在多字节字符串中获取正确的列表位置
我目前正在使用以下代码匹配 HTML:
它与一切完美匹配,但是如果我有一个多字节字符,则在返回位置时将其计为 2 个字符。
例如,返回的$match
数组将给出如下内容:
匹配的实数<br />
是 128,但是有 4 个多字节字符,所以它给出 132。我真的认为添加 /u 修饰符可以让它知道发生了什么,但没有运气。
php - 结合几个 mb_ereg_replace() 调用
如何将这些替换组合成一个正则表达式?
表达式按预期工作,但我想将它们组合成少于三个替换语句。
我不能只替换现有的方向属性,因为我不知道是否有。
编辑
为前两个替换添加了替换:
c++ - 字符串转换:MBCS <-> UNICODE 内有多个 \0
我正在尝试将包含来自位图文件的数据的 std::string 缓冲区转换为 std::wstring。
我正在使用MultiByteToWideChar
,但这不起作用,因为该函数在遇到第一个 - 字符后停止'\0'
。似乎它将其解释为字符串的结尾。
当我不传递 -1 作为长度参数,而是传递 std::string-Buffer 中数据的实际长度时,它会将 Unicode-String 与原始字符串中明显未出现在该位置的字符混淆.. .
我必须编写自己的转换函数吗?或者也许我应该将数据保留为一个随意的字符数组,因为特殊符号将被错误地转换?
带着敬意
php - PHP 多字节替代 UTF8
我一直在寻找字符串操作函数的 UTF8 安全替代方案。我发现了许多不同的意见和建议。我想问一下以下函数是否会导致 UTF-8 出现问题,如果会,我应该改用什么。我知道 PHP 手册中的 mb_ 前缀函数列表,但并不是我使用的所有函数。
函数有:内爆、爆炸、str_replace、preg_match、preg_replace
谢谢
delphi - 将两个字节合并为 WideChar
是否可以将两者结合起来Bytes
,WideChar
如果可以,那么如何?
例如,二进制中的字母“ē”是00010011
=19
和00000001
= 1
,或275
一起。
如何WideChar
从 Delphi 中的两个字节中获取?
windows - MultiByteToWideChar 无法识别某些韩文字符
MultiByteToWideChar 无法将这个韩文文本(引用打印)“2013-03-22 =0E?@HD=0F 05:30”正确转换为 Unicode。此处引用可打印的形式只是为了将这段文字放在这里,实际内容包含0xE和0xF字节。
=0E?@HD=0F 按原样转换,生成的 Unicode 包含 0xE 和 0xF ASCII 字符。但是,我发现那里应该出现几个韩文字符而不是这些字符。我一直认为国际字符序列以代码大于 127 的字节开头,但最近发现它不是真的。但是, MultiByteToWideChar 仍然认为我的方式并拒绝对待 0xE ?@ HD 0xF 作为 50225(或 949)代码页的几个非 ASCII 韩语字符。当我使用 .NET 函数(如 Encoding.GetEncoding(50255).GetString)在同一台计算机上执行相同操作时,我得到正确的转换结果并且韩语字符在那里。但是 MultiByteToWideChar 不起作用。我尝试了可以为 MultiByteToWideChar(MB_COMPOSITE 等)设置的不同标志,但仍然没有运气。
如何让 MultiByteToWideChar 正常工作?如果重要的话,我在 WinXP SP3 上。同样,.NET 方式运行良好,并且在内部 Encoding.GetString 似乎调用了 MultiByteToWideChar。