问题标签 [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 投票
4 回答
12220 浏览

php - 带有外来字符的php sprintf()?

像 sprintf 一样的接缝有外来字符问题?还是我做错了什么?看起来它在从字符串中删除像 åäö 这样的字符时有效。这应该是必要的吗?

我希望以下行正确对齐报告:

我正在使用 sprintf() 像这样:%-12s %-8s -%-10s -%20s %8.2f

使用:php-5.3.23-nts-Win32-VC9-x86

0 投票
1 回答
773 浏览

c++ - 如何判断 wchar_t 是否有代理项(UTF-16)?

我已经看过有关此问题的其他一些帖子,但无法找到有关如何以编程方式确定代码点是否使用超过一个 2 字节(在 Windows 上)wchar_t 的任何详细信息。

一个例子:

我想知道如何确定一个字符何时长度()> 1。

0 投票
2 回答
1847 浏览

php - PHP: Arabic characters as array keys

0 投票
2 回答
248 浏览

php - 如何在 UTF-8 文本中获取单词的正确位置?

我有一个简单的 PHP 代码来获取一个文本的句子并加粗一个特定的单词。

首先,我得到一个数组,其中包含我想要的单词及其在文本中的位置。

然后,对于其中的每个单词,$words_found我都会得到一部分文本,中间是单词。

它工作正常,除了文本是UTF-8带有丹麦字符(åæéø)的文本。因此,当$first_partor$last_part以 unicode 字符开头时,susbtr 字符串为空。

我知道mb_substr函数,所以我用它替换我的代码。

但是使用这个函数 ( mb_substr),单词 ( ) 的位置$offset是错误的,新的子字符串 ( $sentence) 与应有的不匹配。

它是否存在类似的东西mb_str_word_count?如何获得单词的正确位置?

0 投票
1 回答
1537 浏览

c++ - 如何正确使用 MultiByteToWideChar

我正在使用 MultiByteToWideChar 将我的字符串转换为 wstring。我首先尝试为我的 wstring 获取所需的大小。根据将 0 作为最后一个参数传递的文档,应该可以做到这一点。UsingMultiByteToWideChar(CP_UTF8, MB_COMPOSITE, str.c_str(), -1, nullptr, 0);返回 0 作为 wstring 缓冲区所需的大小。我已经验证 str 也是一个非空字符串。我在这里做错了什么?

0 投票
2 回答
427 浏览

c++ - 如何查找字节读取是日文还是英文?

我有一个包含日语和 ascii 字符的数组。我试图找出读取的字符是英文字符还是日文字符。

为了解决这个问题,我遵循

  1. 读取第一个字节,如果 multicharcterswidth 不等于一个,将指针移动到下一个字节现在一起显示整个两个字节并显示已读取日文字符。
  2. 如果 multicharcterswidth 等于 1,则显示字节。并显示消息英文已被阅读。

上面的算法工作正常,但在日语半角形式的情况下失败,例如。シ,ァ等,因为它只有一个字节。我怎样才能知道字符是日文还是英文?

**注意:**我尝试从网上读取的第一个字节将告诉它是否是日语,我在算法的第 1 步中已经介绍过。但它不适用于半宽。

编辑:我正在解决的问题我在字符的开头和结尾包含控制字符 0X80 来识别字符串。我写了以下内容来识别控制字符的结尾。

cntlchar .....(我的字符,可以是日语).....cntlchar

它在英语时效果很好,但在日语半角上不起作用。

我该如何处理?

0 投票
2 回答
3505 浏览

c - 使用 `strstr` 在字符串中搜索多字节 UTF-8 字符是否安全?

按照我之前的问题:尽管手册页有免责声明,为什么`strchr` 似乎适用于多字节字符?,我发现这strchr是一个糟糕的选择。

相反,我正在考虑使用strstr来查找单个字符(不是多字节char):

输出:

é 是一个多字节字符

这是我所期望的:我的多字节字符的第一个字节的位置。

先验,这不是规范的使用,strstr但它似乎运作良好。
这种解决方法安全吗?你能想到任何会导致错误的副作用或特殊情况吗?

[编辑]:我应该准确地说我不想使用wchar_ttype 并且我处理的字符串是 UTF-8 编码的(我知道可以讨论这个选择,但这是一个无关紧要的辩论)

0 投票
1 回答
141 浏览

php - 使用 PHP mb 函数将多字节字符串截断为大约 n 个单词

在 SO 上提出这个问题后,我需要准备一个自定义 PHP 函数来获取我的字符串的简短版本,因为我在网上找不到直接的答案/代码。

要求是:

  1. 意识到multibyte languageş, ı,ğ编码 的字符UTF-8
  2. 能够确定允许的长度(通过使用字符数)
  3. 在获取长字符串的一部分后,字符串末尾的单词必须是有意义的,并将“...”连接到该部分的末尾
  4. 必须考虑击键(字符),而不是字节

读者应该知道代码有效,但我不是专家。我相信通过更有效或更深入思考的编码可以实现相同的目标。正如您还看到的,代码没有安全问题,它只会在输入字符串超过允许的长度时才对其进行操作。

问候

0 投票
3 回答
632 浏览

regex - libc regcomp 和 regexec 中的多字节字符

0 投票
1 回答
201 浏览

php - 没有 MB 函数的 PHP 和 UTF-8 字符串函数?

我尝试将 UTF-8 与 PHP 一起使用,我的站点上的输出似乎还可以(在测试时显示正确的 äöüß 等),但有一个简单的问题......当我使用它时echo strlen("Ä");,它显示“2”......我读了本主题:strlen() 和 UTF-8 编码 在我读到的答案中:

当 UTF-8 解码器读取不是有效 UTF-8 数据的数据时,通常会插入替换字符。

我想知道,为什么我的数据不是有效的 UTF-8?因为:

  • 我将所有文件保存在“UTF-8 no BOM”中
  • 在第一行使用 UTF-8 标头
  • 我的浏览器还显示“编码:UTF-8”

这是我的代码:

我的问题:我可以使用带有 UTF-8 的普通 PHP 函数还是必须使用“mb”函数?

如果可以使用普通的 PHP 函数,为什么在我的代码中显示 strlen() 2 而不是 1?