问题标签 [multibyte]

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 投票
4 回答
32303 浏览

php - mb_str_replace()... 很慢。有什么选择吗?

我想确保我正在运行的一些字符串替换是多字节安全的。我在网上找到了一些 mb_str_replace 函数,但它们很慢。我说的是通过它可能会增加 500-900 个字节后增加 20%。

有什么建议吗?我正在考虑使用 preg_replace ,因为它是本机的并已编译,因此它可能会更快。任何想法将不胜感激。

0 投票
2 回答
4437 浏览

sed - 使用 sed 从文件中删除多字节字符

我需要从文件中删除所有多字节字符,我不知道它们是什么,所以我需要覆盖整个范围。

我可以像这样使用 grep 找到它们: grep -P "[\x80-\xFF]" 'myfile'

试图用 sed 做一个类似的事情,但是删除它们。

干杯

0 投票
2 回答
3412 浏览

php - strpos 在 PHP 中搜索 unicode(并处理内联 UTF-8)

我在处理可能是也可能不是 UTF-8 的另一个字符串(干草堆)中简单搜索两个字符的 unicode 字符串(针)时遇到问题

部分问题是我不知道如何指定用于 in 的代码strpos,并且我不知道 PHP 是否必须在对代码的任何特殊支持的情况下进行编译,或者我是否必须使用mb_strpos我正在尝试的避免,因为它也可能不可用。

IE。例如针是 U+56DE U+590D(没有空格)

使用 preg_match 可能是preg_match("@\x{56DE}\x{590D}@",$haystack) 但实际上需要@u的可能不可用,Compilation failed: character value in \x{...} sequence is too large无论如何我得到了。

我不想使用 preg_match ,因为它可能比 strpos 慢得多(还有其他序列需要搜索)。

我可以转换U+56DE U+590D成它的单字节序列(可能是 5-6 个字符),然后通过 strpos 搜索它吗?如果是这样,我不知道如何将其转换为字节。

无论如何,您如何在 PHP 中指定 unicode 内联?我的意思是在PRCE之外?

$blah="\u56DE\u590D"; 不工作?

感谢您的任何想法!

0 投票
3 回答
8016 浏览

php - PHP mb_ereg_replace 未替换,而 preg_replace 按预期工作

我试图用空字符串替换字符串中的所有非单词字符,期望空格,并将所有多个空格放在一起作为一个空格。

以下代码执行此操作。

但是当我尝试使用 mb_ereg_replace 时,什么也没有发生。

$cleanedString 与上述情况下的 if $name 相同。我究竟做错了什么?

0 投票
3 回答
35096 浏览

php - 多字节字符串上的 str_replace() 危险吗?

给定某些多字节字符集,我是否正确假设以下内容没有达到预期的效果?

特别是,如果输入的字符集中可能具有像 0xbf5c 这样的有效字符,那么攻击者可以注入 0xbf22 来获取 0xbf5c22,留下一个有效字符后跟一个不带引号的双引号 (")。

有没有一种简单的方法可以缓解这个问题,还是我一开始就误解了这个问题?

(在我的例子中,字符串进入 HTML 输入标签的 value 属性:echo 'input type="text" value="' . $string . '">';)

编辑:就此而言,像 preg_quote() 这样的函数呢?它没有字符集参数,因此在这种情况下它似乎完全没用。当您没有将字符集限制为 UTF-8 的选项时(是的,那很好),您似乎真的有缺陷。在这种情况下可以使用哪些替换和引用功能?

0 投票
9 回答
14289 浏览

php - UTF-8 的多字节安全 wordwrap() 函数

PHP 的wordwrap()函数对于像 UTF-8 这样的多字节字符串不能正常工作。

评论中有一些 mb 安全函数的例子,但是对于一些不同的测试数据,它们似乎都有一些问题。

该函数应采用与 完全相同的参数wordwrap()

特别要确保它适用于:

  • if$cut = true切中间词,否则不要切中间词
  • 不要在单词中插入额外的空格 if$break = ' '
  • 也为$break = "\n"
  • 适用于 ASCII 和所有有效的 UTF-8
0 投票
3 回答
732 浏览

c++ - 如何在 c/c++ 控制台应用程序中正常输出多字节字符?

默认情况下,多字节字符会像???在控制台中一样显示,我该如何解决?

0 投票
1 回答
171 浏览

php - php 扩展:如何使用 mb_* 函数

PHP 中有很多可用于脚本的功能。扩展编写者是否可以通过某种方式使用此功能?我真的很想使用多字节函数,但找不到一个例子。

0 投票
1 回答
897 浏览

php - PHP 中的多字节安全 URL 标题转换

我正在尝试创建一个多字节安全标题 => url 字符串转换器,但是我遇到了不知道如何在删除其他字符时在 url 中允许合法亚洲(和其他)字符的问题。这是目前设置的功能。

请记住,其中有一些与 CMS 相关的功能,并且这些功能实际上是类的一部分。主函数调用将是

而且我很确定问题在于该函数本身中的正则表达式替换,但我不太确定在不破坏某些现有功能的情况下要更改什么。

我希望能够获取以下标题并让它们返回 urlsafe 标题。

“第一个博客!” => "The-Very-First-Blog"

“スーザンは本日、グラスゴーのベラヒューストン・パークでローマ法王の”(不知道这是什么意思)但它需要转换为 urlsafe 并且目前它只返回一个空字符串。

0 投票
2 回答
1210 浏览

arm - ARM Cortex-A8:一次内存读取会获取多少字节?

我正在尝试改进在 ARM cortex-a8 处理器上运行的图像处理项目。

我正在从内存中访问 8 位灰度图像数据。在我的函数中,现在我正在逐字节访问单个像素值。

我认为通过使用 NEON,我可以通过一次从内存中访问 128/8 = 16 个字节来改进这一点,然后在我的函数中使用它们。但是在运行更改后的版本时,我发现这实际上比逐字节访问要花费更多时间。我认为我使用 NEON 的获取正在成为一个瓶颈,花费的时间比我的计算时间还多。

ARM Cortex-A8 的数据总线大小是多少?在一次内存提取中从内存中访问了多少字节?