问题标签 [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.

0 投票
2 回答
8296 浏览

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

0 投票
1 回答
529 浏览

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

0 投票
4 回答
66922 浏览

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() 已经显示它已启用。我不知道为什么它以前不起作用:/

0 投票
2 回答
7235 浏览

python - 如何在 Python 中处理多字节字符串

PHP中有多字节字符串函数来处理多字节字符串(例如:CJK脚本)。例如,我想通过len在python中使用函数来计算多字节字符串中有多少个字母,但它返回的结果不准确(即这个字符串中的字节数)

PHP中有没有类似mb_strlen的包或函数?

0 投票
3 回答
1868 浏览

php - 如何使用 preg_match 在多字节字符串中获取正确的列表位置

我目前正在使用以下代码匹配 HTML:

它与一切完美匹配,但是如果我有一个多字节字符,则在返回位置时将其计为 2 个字符。

例如,返回的$match数组将给出如下内容:

匹配的实数<br />是 128,但是有 4 个多字节字符,所以它给出 132。我真的认为添加 /u 修饰符可以让它知道发生了什么,但没有运气。

0 投票
1 回答
427 浏览

php - 结合几个 mb_ereg_replace() 调用

如何将这些替换组合成一个正则表达式?

表达式按预期工作,但我想将它们组合成少于三个替换语句。
我不能只替换现有的方向属性,因为我不知道是否有。

编辑
为前两个替换添加了替换:

0 投票
1 回答
268 浏览

c++ - 字符串转换:MBCS <-> UNICODE 内有多个 \0

我正在尝试将包含来自位图文件的数据的 std::string 缓冲区转换为 std::wstring。

我正在使用MultiByteToWideChar,但这不起作用,因为该函数在遇到第一个 - 字符后停止'\0'。似乎它将其解释为字符串的结尾。

当我不传递 -1 作为长度参数,而是传递 std::string-Buffer 中数据的实际长度时,它会将 Unicode-String 与原始字符串中明显未出现在该位置的字符混淆.. .

我必须编写自己的转换函数吗?或者也许我应该将数据保留为一个随意的字符数组,因为特殊符号将被错误地转换?

带着敬意

0 投票
2 回答
1728 浏览

php - PHP 多字节替代 UTF8

我一直在寻找字符串操作函数的 UTF8 安全替代方案。我发现了许多不同的意见和建议。我想问一下以下函数是否会导致 UTF-8 出现问题,如果会,我应该改用什么。我知道 PHP 手册中的 mb_ 前缀函数列表,但并不是我使用的所有函数。

函数有:内爆、爆炸、str_replace、preg_match、preg_replace

谢谢

0 投票
2 回答
875 浏览

delphi - 将两个字节合并为 WideChar

是否可以将两者结合起来BytesWideChar如果可以,那么如何?
例如,二进制中的字母“ē”是00010011=1900000001= 1,或275一起。


如何WideChar从 Delphi 中的两个字节中获取?

0 投票
2 回答
639 浏览

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。