问题标签 [multibyte-characters]

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 投票
3 回答
28080 浏览

java - 将部分 Java 字节数组附加到 StringBuilder

java -如何将一部分字节数组附加到StringBuilderJava下的对象?我有一段从 InputStream 读取到字节数组的函数。然后我想将我读到的任何内容附加到 StringBuilder 对象中:

0 投票
4 回答
1956 浏览

ruby-on-rails-3 - Rails 截断包含 é 的 UTF-8 字符串(例如)

我正在开发一个使用ruby​​ 1.9.3mongoid作为我的 ORM的rails 3.1应用程序。我面临一个烦人的问题。我想像这样截断帖子的内容:

我正在使用raw并且strip_tags因为我post.content实际上是用富文本编辑器处理的。

我对非 ASCII 字符有一个严重的问题。想象一下我的帖子内容如下:

我在上面以一种天真的方式做的是:

看起来 truncate 正在查看字符串的每个单词,例如é&eactute;éé.

有没有办法:

  1. 截断处理实际的 UTF-8 字符串,其中 'é' 代表单个字符?那将是我最喜欢的方法。
  2. 破解上面的指令,这样结果会更好,比如强制轨道在 2 个单词之间截断,

我问这个问题是因为到目前为止我还没有找到任何解决方案。这是我的应用程序中唯一遇到这种字符问题的地方,这是一个主要问题,因为网站的全部内容都是法语,所以包含很多é, ç, à, ù.

另外,我认为这种行为对于助手来说是非常不幸的,truncate因为在我的情况下,它根本不会截断 200 个字符,而是截断大约 25 个字符!

0 投票
1 回答
267 浏览

c++ - sizeof('ab') 是否等于 C++ 中的 sizeof(int)?

考虑到我有以下程序可以确定多字节字符的大小。

我的GCC编译器的输出为 4。

所以我有以下问题:

  • 多字节字符文字的大小是多少?
  • sizeof('ab')等于sizeof(int)? _
0 投票
1 回答
952 浏览

c++ - 从多字节字符集转换旧的 Visual Studio C++ 项目

我想将旧的 C++ MFC 项目从 Visual Studio 2005 转移到更新的版本。该项目使用我知道当前 Visual Studio 不再支持的多字节字符集。因此,第一步应该是使项目独立于字符集。一位同事告诉我,如果我_T()在每个文本周围放置一个宏,我就可以做到这一点。不幸的是,该项目包含大量静态文本,添加宏需要数周时间。

难道没有别的办法了吗?

0 投票
1 回答
54 浏览

c++ - 多字节字符 '\377777' 是如何工作的?

std::numeric_limits<size_t>::max()当我尝试一些非标准的方法来为我寻找时,Clang 向我提到了这个东西allocator::max_size()

表达式大小似乎限制在 4 个字节,所以它看起来很像一个 impl 定义的多字节字符,但我不知道它是如何工作的。

第 2-4 行似乎都返回 int 但只有第 4 行警告-Wfour-char-constants是否打开-Weveryting。为什么 4-byte char 必须警告它的用户?

请解释它是如何工作的。它有任何口语或可能是规范的术语吗?

godbolt.org/g/7AR9nw

0 投票
2 回答
299 浏览

mysql - MySQL 5.7 错过了对两个汉字单词的匹配

表tb:

现在我用一个四字的“企业贷款”来匹配关键字和标题

但是当我将它们与两个汉字的单词“贷款”匹配时,没有匹配的结果。

0 投票
2 回答
106 浏览

php - 如何使用预定义的字母对 unicode 中的字符串进行排序?

0 投票
2 回答
1954 浏览

c++ - C++ 在 Linux 上使用 wstring_convert

我希望能够将从文件中读取的文本转换为多字节字符。我在 Windows 上有以下适用于我的 C++ 代码。当我尝试在 Linux 上编译代码时,虽然它失败了。

这会引发以下错误:

我正在使用 GCC Red Hat 4.4.7-4。根据我阅读的内容,我已经导入了“语言环境”,但仍然找不到。

如果 wstring_convert 不可用,我可以做一些等效的事情吗?

0 投票
0 回答
47 浏览

c++ - mbsrtowcs 成功,但是如何按字符打印字符

我在 Mac OS X 上,使用 clang++ 6.0。

我可以在控制台上打印一个 std::string 泰语字符。我可以使用 mbsrtowcs() 将其转换为宽字符数组。但是逐个字符打印只显示问号'?'。我一定不明白。

有人可以建议我如何打印每个字符,或者有可能吗?我知道系统知道这些字符,因为它可以将它们打印成一个宽字符数组(见下面的输出)。

编码:

输出:

0 投票
0 回答
390 浏览

c - 为什么我不能将多字节字符串转换为宽字符串?即使 mbstring 似乎有效,mbsrtowcs 也会因 EILSEQ 失败

请看我写的这个片段,它应该简单地将一个多字节字符串(它从标准输入获得)转换为一个宽字符串。从 cppreference阅读mbsrtowcs和文档后,我认为它是有效的:mbstate_t

是的,这适用于 ASCII 字符串。但我试图处理非 ASCII 字符串的原因是我想支持 ASCII 表之外的变音符号!它对那些失败了。第一次调用mbsrtowcs失败并EILSEQ显示 ,这表明多字节字符串无效。但奇怪的是,用 来检查它gdb,它似乎是有效的!(只要gdb正确显示)。请查看将此片段提供非 ASCII 字符串并gdb在下面输入的效果:

如果这很重要,我在 Linux 上,并且语言环境编码似乎是 UTF8:

(这就是为什么我希望它能够工作,像printf("ąsa\n");在 Linux 上对我有用但在 Windows 上却不行的琐碎程序)

我错过了什么?我究竟做错了什么?