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

encoding - 可变字节编码说明

我对字节编码的世界很陌生,所以如果我以错误的方式使用/表达简单的概念,请原谅我(并且一定要纠正我)。

我试图理解可变字节编码。我已经阅读了 Wikipedia 文章 ( http://en.wikipedia.org/wiki/Variable-width_encoding ) 以及信息检索教科书中的一本书章节。我想我了解如何编码十进制整数。例如,如果我想为整数 60 提供可变字节编码,我将得到以下结果:

(如果以上内容不正确,请告诉我)。如果我了解该方案,那么我不完全确定信息是如何压缩的。是不是因为通常我们会使用 32 位来表示一个整数,所以表示 60 会导致1 1 1 1 0 0前面有 26 个零,从而浪费了那个空间而不是只用 8 位来表示它?

预先感谢您的澄清。

0 投票
3 回答
5439 浏览

php - 在 PHP 中解析多字节字符串

我想编写一个基于状态机的(HTML)解析器,但我怀疑如何实际读取/使用输入。我决定将整个输入加载到一个字符串中,然后像处理数组一样使用它,并将其索引作为当前解析位置。

单字节编码不会有问题,但在多字节编码中,每个值不代表一个字符,而是一个字符的一个字节。

例子:

输出:

这意味着我不能在循环中遍历字符串来检查单个字符,因为我永远不知道我是否在一个字符的中间。

所以问题是:

  • 如何以性能友好的方式多字节安全地从字符串中读取单个字符?
  • 在这种情况下,使用字符串是一个数组是个好主意吗?
  • 你将如何阅读输入?
0 投票
2 回答
752 浏览

php - 合并两个正则表达式以截断字符串中的单词

我正在尝试提出以下将字符串截断为整个单词的函数(如果可能,否则它应该截断为字符):

以下是一些测试:

它们都按原样工作,但是如果我放弃第二个,preg_replace()我会得到以下信息:

Iñtërnâtiônàlizætiøn_and_then_the_quick_brown_fox_jumped_overly_the_lazy_dog 有一天,这只懒惰的狗把这只可怜的狐狸撞倒了,直到她死去......

我不能使用substr(),因为它只适用于字节级别并且我无权访问mb_substr()ATM,我已经多次尝试将第二个正则表达式与第一个正则表达式一起加入,但没有成功。

请帮助 SMS,我已经为此苦苦挣扎了将近一个小时。


编辑:对不起,我已经醒了 40 个小时,我无耻地错过了这个:

不过,如果有人有更优化的正则表达式(或忽略尾随空格的),请分享:

编辑2:我仍然无法摆脱尾随空格,有人可以帮助我吗?

编辑 3:好的,我的编辑都没有真正起作用,我被 RegexBuddy 愚弄了——我可能应该把它留到另一天,现在睡一觉。今天休息。

0 投票
3 回答
13757 浏览

php - 多字节 strtr() -> mb_strtr()

有没有人写过函数 strtr() 的多字节变体?我需要这个。

编辑 1(所需用法示例):

0 投票
2 回答
1718 浏览

c - C/C++ I18N mbstowcs 问题

我正在致力于国际化 C/C++ 应用程序的输入。我目前遇到了从多字节字符串转换为宽字符串的问题。

代码需要跨平台兼容,所以我尽量使用mbstowcs和wcstombs。

我目前正在使用 WIN32 机器,并且已将语言环境设置为非英语语言环境(日语)。

当我尝试转换多字节字符串时,我似乎遇到了一些转换问题。

以下是代码示例:

执行结束时,宽字符串不包含转换后的数据。我认为代码页设置存在问题,因为当我使用 MultiByteToWideChar 并发送当前代码页时

例如:MultiByteToWideChar(CP_ACP, 0, mbsVal, -1, wcsVal, size + 1); 代替 mbstowcs 调用,转换成功。

我的问题是,如何使用通用 mbstowcs 调用而不是 MuliByteToWideChar 调用?

0 投票
6 回答
14956 浏览

php - 如何使用PHP检查单词是日语还是英语

我想在这个功能中对英文单词和日文单词有不同的处理

谢谢你

0 投票
2 回答
9439 浏览

android - 在 java/android 中合并两个字节

我有一个 22 字节的帧。该帧是来自加速度计通过蓝牙的输入流。加速度计读数是一个 16 位数字,分为两个字节。

当我尝试将字节与缓冲区 [1] + 缓冲区 [2] 合并时,而不是添加字节,它只是将结果并排放置。所以 1+2 = 12。

有人可以告诉我如何组合这两个字节来获得原始数字。(顺便说一句,字节是小端发送的)

谢谢

0 投票
1 回答
975 浏览

multibyte - 将多字节字符转换为十六进制

我有一个将通过 BizTalk 映射器的传入文件。我需要确定文件的一个字段中是否有 3 字节的汉字(文件是 xml)。我已经知道如何找到 3 字节字符。但是,如何将其转换为十六进制值?十六进制值是我将发送到输出模式,然后发送到 DB2 服务器。

0 投票
2 回答
10712 浏览

c - 如何获取多字节字符串的字节大小

如何在 Visual C 中获取多字节字符串的字节大小?有功能还是我必须自己数字符?

或者,更一般地说,如何获得 TCHAR 字符串的正确字节大小?

解决方案:

编辑:
我只是在谈论以空字符结尾的字符串。

0 投票
4 回答
6041 浏览

c++ - 如果没有正确删除,为什么 wstring::c_str 不会导致内存泄漏

代码段 1:

代码段 2

如果未删除代码段 2 中的值,则不会发生内存泄漏。但是,如果未删除代码段 1 中的 value1,则存在内存泄漏。wstring::c_str 的内部代码在我看来是一样的。