问题标签 [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.
c++builder - LastDelimiter 找不到最后一个空格字符
我正在使用 C++ Builder 10.2 Tokyo,我必须在变量中找到最后一个空格的位置,该String
变量的值类似于"XXX YYYYY TYUR KXYZ"
;
如果我使用该函数LastDelimiter(const System::UnicodeString Delimiters, const System::UnicodeString S)
,它返回 0,但如果我使用该UnicodeString method::LastDelimiter( UnicodeString Delimiter )
方法,它返回变量的长度。
这是我正在使用的代码:
在调试方法调用时,它给了我正确的值(34),尽管结果nPosCut
是 42(消息长度),如代码中所写,或者如果我更改String(" ")
为L" "
.
我究竟做错了什么?
c++ - MFC 应用程序中使用多字节字符集的 UTF-8 文本
c - 如何计算多字节字符的数量?
我想为以下程序获得 5 而不是 10。有人知道如何修复代码来计算多字节字符的数量吗?谢谢。
php - 如何在mysql或数组中查找未知字符
首先,我使用排序规则创建了数据库,utf8mb4_general_ci
并使用相同的排序规则创建了表。然后我导入csv文件
样本数据
我检查
SELECT malayalam_definition from dict;
然后var_dump($row);
给出
您可以在每个单词之后找到一个未知字符,例如"ശരശയ്യ "
. 我试过select trim(malayalam_definition) from dict
但给出了相同的结果。如何找出每个单词后的那个字符?
php - 将字符串转换为字符数组 - 多字节
假设在 2019 年,每个不是 UNICODE 安全的解决方案都是错误的。在 PHP 中将字符串转换为 UNICODE 字符数组的最佳方法是什么?
显然,这意味着使用大括号语法访问字节是错误的,以及使用str_split
:
从样本输入,如:
我预计:
apache-spark - Spark.Sql 无法从配置单元表中读取日语(Mutltbyte 字符)?
作为我的一个程序的一部分,我正在蜂巢表中写日语字符。后来,当我从 Hive 中选择该字段时,我能够读取它,但是当我从 Spark.sql 中读取它时,它并没有给我预期的结果。
从 hive 查询时的同一张表给出输出 -
windows - JSch - 无法列出某些具有多字节字符的文件路径
我正在尝试使用 JSch 从 Windows SFTP 服务器上的文件夹位置获取文件列表。我看到的一种行为是:
在一定数量的字符之后,文件甚至没有被列出,也没有抛出异常。
例如:
未列出的文件: C:/Data/Thai-Han-Test1/All_testcases_special_characters/Special_characters/Multilinguage_Characters_list/Han/当世界需要时,请使用!将于年月10日-12日在德国市的第第十届统一码国际研讨会现在开始注册。本次 - Copy2.txt
列出的文件: C:/Data/Thai-Han-Test1/All_testcases_special_characters/Special_characters/Multilinguage_Characters_list/Han/世界当需要交流的时候,请用!今年10月10日-12日在德国市举办的第十一届统一码国际研讨会现在开始注册。本 - Copy3.txt
为了获得可以列出的文件路径的最大长度,我从第一个字符串中删除了一个额外的字符 次 并且它起作用了。
我也尝试了一个更大的带有英文字符的字符串,它也被列出了。
我的问题是 - 从 JSch 的角度来看,字符长度是否有任何限制,因为我可以通过在服务器本身上执行 dir 来列出这两个文件。
下面的代码片段供参考,对于给定的文件夹路径列表,文件被添加到列表中。
谢谢你的帮助!
vim - 如何将多字节字符简单地视为一个字节序列?
我想将 vim 与二进制文件一起使用。我运行 run vim with-b
我有isprint =
and display += uhex
。我正在使用以下内容statusline
:
%<%f\ %h%m%r%=%o\ (0x%06O)\ \ %3.b\ <%02B>\ %7P
所以我得到的输出包含一些有用的信息,比如文件中的字节偏移量和十六进制的当前字符等。但是我遇到了将随机数据片段解释为多字节字符的问题,这些字符阻止我访问内部字节,结合周围环境(包括 vim 的装饰)或显示为�。
当然我试过用++enc=latin1
. 但是,我的系统编码是 UTF-8,所以 vim 应该做的是在内部将文件从 Latin-1 转换为 UTF-8 并显示它。这有两个问题:
- 该序列
<c3><ac>
显示为ì
,而不是ì
,但每个字符都计为两个字节,因此它破坏了 my%o
并且计算了错误的偏移量。这是文件中的 2 个字节,但在 vim 的缓冲区中显然是 4 个字节。 - 我不知道为什么我
isprint
的被忽略了。这些字符都不在 32 到 126 之间,因此它们应该以十六进制显示。
我找到了以下解决方法:我设置encoding
为latin1
, 但设置termencoding
为utf-8
. 这实现了我想要的,但破坏了其他事情,比如当 vim 需要以我的语言显示状态消息(“新文件”、“更改”等)时,因为它也想为它们使用编码并且它们不适合. 我想我可以运行 vim,LC_ALL=C
但感觉我已经在使用太多肮脏的把戏了。有没有更好的方法,即不必乱来encoding
?
json - 单字节 Oracle 环境中的多字节字符存储(在 BLOB 中)和搜索(使用 JSON 函数)
详细信息:Oracle 数据库 12c,数据库版本:12.1.0.2.0
问题描述及要求:
第1部分 :
- 我将 JSON 数据存储在 NCLOB 列中。
- 我需要从 JSON 数据中搜索文本。
- 考虑到性能,我可以选择使用数据类型 BLOB,因为数据是 JSON 并且在 BLOB 列中。我可以使用 JSON 索引全文搜索。
与 NCLOB 上的简单查询 (LIKE) 相比,在 BLOB 列上使用 JSON 文本搜索索引进行搜索时,性能显着提高,因此使用 BLOB 列。
关于 JSON 搜索索引:
JSON 搜索索引是一种专门针对 JSON 数据的全文索引。优化器仅在数据库使用AL32UTF8 或 WE8ISO8859P1 字符集时才考虑使用索引,并且仅适用于 VARCHAR2、BLOB 或 CLOB 列中的 JSON 数据,而不是 NVARCHAR2 和 NCLOB 列。
第2部分 :
我们有两种数据库类型,即单字节和多字节部署
单字节字符集:
NLS_NCHAR_CHARACTERSET--->AL16UTF16, NLS_CHARACTERSET------>WE8MSWIN1252
多字节字符集:
NLS_NCHAR_CHARACTERSET--->AL16UTF16, NLS_CHARACTERSET------>AL32UTF8
第 3 部分:
在多字节部署中,我能够存储和搜索(使用 JSON_TEXTCONTAINS)多字节文本,例如 'məharaːʂʈrə'。原因:因为数据库使用 AL32UTF8(BLOB 列)字符集 注意:JSON_TEXTCONTAINS 仅适用于索引。
在单字节部署中,我无法存储相同的文本,即 'məharaːʂʈrə'(由于它是多字节的,转换会导致数据丢失,例如 'm?hara???r?')
问题:如何在具有字符集的单字节部署的BLOB列中存储多字节数据,即'məharaːʂʈrə':WE8MSWIN1252。
如 oracle 所述:如果数据库使用AL32UTF8 或 WE8ISO8859P1 字符集,优化器只会考虑使用索引 请注意,我也可以在单字节环境中使用 JSON 搜索索引,即 JSON_TEXTCONTAINS(对于简单搜索,即单字节)。
一旦我能够按原样存储数据,我将能够使用 JSON_TEXTCONTAINS 进行搜索。
示例代码(在单字节和多字节部署中尝试:请注意:https ://livesql.oracle.com/是多字节部署。
创建表:
数据应该是严格的 Json(所以我们可以用点符号遍历):
创建索引:
插入简单的json
如果有任何错误(单字节),请将其转换:
存储值:
观察:在单字节环境下会导致数据丢失。
现在搜索:
观察:多字节将产生行,但单字节将不会产生行。
也能够在单字节环境中使用 JSON 搜索索引,即 JSON_TEXTCONTAINS(对于简单搜索,即单字节)——下面的查询结果为一行:
c++ - 打印包含多字节字符的固定宽度字符串
我有一些以多字节 UTF8 格式存储的字符串,我想在固定宽度的空间中将它们打印到控制台。我这样做是:
文件名变量采用 ASCII 格式并且工作正常,但如果 titleUTF 变量包含任何多字节字符,它们将打印得太短。我认为这是因为 wprintf 函数在计算宽度时包含了多字节字符的每个字节。请参阅下面的输出:
THPS2 标题中的“破折号”字符实际上是一个半角日文字符,这就是在这种情况下破坏 wprintf 函数的原因。
我试过使用“%-32lS”,但这会将垃圾打印到控制台,我试过小写的“s”,但这也会打印垃圾。任何想法如何即使使用多字节字符也能获得固定宽度的打印?
编辑:
这是一个屏幕截图,显示了内存中的 titleUDF 变量,以及有问题的“THPS2”字符串字节:
如您所见,“破折号”字符表示为 0xef 0xbd 0xb0
值得注意的是,我必须调用:
让多字节字符正确显示。此外,我必须将控制台中的字体更改为具有这些字符字形的字体。我使用 NSimSun。