问题标签 [ucs2]
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++ - 从 ToUnicodeEx() 转换为 UTF-8
我使用 GetAsyncKeyState() 获取输入,然后使用 ToUnicodeEx() 将其转换为 unicode:
我可以使用 wfstream 将其写入文件,如下所示:
当我在 Notepad++ 中打开此文件时,它位于 UCS-2 LE 中,而我希望它采用 UTF-8 格式。我相信 ToUnicodeEx() 以 UCS-2 LE 格式返回它,它也只适用于宽字符。有没有办法通过首先转换为 UTF-8 来使用 fstream 或 wfstream 来做到这一点?谢谢!
c# - 处理对短信的异常回复
我编写了一个预约安排系统,它(除其他外)在预约到期前一天发送提醒短信。它要求用户通过对文本回复“OK”来确认他们是否出席了约会。
在人们确实回复的地方,它通常运作良好,并且减少了巨大的手动工作量。我现在正在整理一些缺陷(谢天谢地,它们很少而且影响很小),但偶尔我会看到@u{some string}
. 我没有规则来解析这个,所以他们进入一个无效的响应桶进行手动跟进。
今天看到一个回复如下:
@u004f006b
在这个阶段我很确定@u 表示后面是 Unicode(类似于 C# 中的 \u 指示符),因此假设我得到以下信息:
U+004F => 十进制 79 => O(大写)
U+006B => 十进制 107 => k(小写)
负责的公司告诉我消息是这样发送到他们的服务器上的,所以这一定是客户端问题,对吧?我查看了我的 SMS 发送应用程序(Android 7.x 上的 ChompSMS),看不到任何将其设置为以 Unicode 和 ASCII 显式发送的内容,所以我想知道这是怎么发生的?
我从数据库中提取了 10 个以这个 Unicode 标识符开头的随机响应,并尝试编写一些东西来处理它们。以下是我对此的天真尝试:
我的问题:
为什么会发生这种情况?
使用代码 - 我在这里有什么遗漏吗?例如,框架中是否有一些东西已经可以为我处理这个问题,或者是否有一些对 Unicode 了如指掌的人可以看到的明显缺点?有什么我可以做得更好的吗?
一些代码点仍然呈现为颠倒的问题(我怀疑这些是表情符号) - 有什么办法可以处理它们吗?
编辑 2018-04-26 给后代的说明
(我打算把它放在评论中,但不管我用它做什么,它看起来都很糟糕)
我查看了已接受答案中的链接,虽然代码比我的更简洁,但最后的输出是相同的——包括倒置的问号(以及我怀疑的字形是表情符号)。更多关于 Unicode 和 UCS2 之间差异的阅读可以在这里找到,维基百科的文章也值得一读:
TL;博士
- UCS-2 已过时并已被 UTF-16 取代 UCS-2 是固定宽度编码方案,而 UTF-16 是可变宽度编码方案
- 支持 UTF-16 的应用程序可以读取 UCS-2 文件,但反之则不行
- UTF-16 支持从右到左的脚本,而 UCS-2 不支持
- UTF-16 支持规范化,而 UCS-2 不支持
vb.net - 在 Visual Basic 2010 中将 ucs-2 转换为 utf-8
您好,我使用visual baisc 2010和usb调制解调器通过SerialPort“AT+CUSD=1”在命令“ussd”发送我的问题,当接收结果得到这样的ucs-2
+CUSD: 0,"00430075007200720065006E007400540069006D0065002000690073003A002000320031002D004A0055004C002D0032003000310038002000310303"
我如何转换为 utf-8
python - 使用 Python 进行 UCS2 编码和解码
UnicodeEncodeError:“ascii”编解码器无法对位置 3-7 中的字符进行编码:序数不在范围内(128)。
有什么建议吗?
ruby - Ruby UTF-8 字符串到 UCS-2 的转换
我的 Ruby 代码中有一个 UTF-8 字符串。由于限制,我想将该字符串中的 UTF-8 字符转换为它们的转义等效项(例如\u23
),或者只是将整个字符串转换为 UCS-2。我需要明确执行此操作以将数据导出到文件
我尝试在 IRB 中执行以下操作:
它的输出是:
这似乎工作正常(我得到“ohm”为 2126),直到我从数组中读取数据(在 Rails 中):
这导致错误:
不兼容的字符编码:UTF-8 和 UTF-16BE
然后我尝试编写一个基本的文件转换例程:
这导致文件中出现各种奇怪的字符。
不知道出了什么问题。
有没有更好的方法来解决在 Ruby 中将 UTF-8 数据转换为 UCS-2 的问题?我真的不介意这实际上在字符串中被更改为字符串\u2126
的文字部分而不是实际值。
帮助!
临时解决方法
我猴子修补了这个来做我想做的事。它不是很优雅,但它可以完成工作(是的,我知道它不漂亮......这只是获得我需要的东西):
可以使用哪个:
c++ - 同一个 C++ 项目中的 ASCII 和 UTF-8(或 UCS-2 和 UTF-16)字符串
我们有一个项目,由于历史原因,字符串处理是编码和表示的杂音;我们肯定有一些地方只能可靠地处理 ASCII,一些地方可能使用 UTF-8,我怀疑外围的一些地方正在使用特定于平台的 8 位编码(当然在我们不同的目标平台之间有所不同),各种设计为采用 UCS-2 的地方,也许还有一些很乐意在 UTF-16 上运行的地方——所有这些地方有时都作为 C 风格的字符串 ( char*
, CHAR16*
) 传递,有时作为 C++ 字符串 ( std::string
, std::basic_string<CHAR16>
) 传递。当然,文档方面的内容很少。
作为解开这个混乱的第一步,我想建立一个类型系统,为不同的编码使用真正不同的类型。
我想到的一个想法是使用 egsigned char
作为 ASCII 字符串和unsigned char
UTF-8 字符串以及char16_t
UCS-2 和short
UTF-16(或类似的东西)的基础,但这意味着我不会不能直接使用字符串文字。此外,能够简单地将 ASCII 字符串提供给期望 UTF-8 的函数(但反之亦然)会很整洁。
对于如何解决这个问题,或者甚至是工作代码,你有什么聪明的建议吗?
代码需要与 C++11 兼容。
请不要回答“始终始终使用 UTF-8”这样的答案,因为这几乎是我的最终目标;相反,这是关于创建一个我认为可以帮助我实现目标的工具。
-- 附录 --
我可能应该提到我认为我们已经遇到了字符串编码不能正确“排列”的问题,例如 UTF-16 字符串被传递给只能处理 UCS-2 字符串或特定于平台的 8 位字符串的函数被传递给需要 ASCII 字符串的函数。就在昨天,我发现专用的转换函数在其名称中带有“ASCII”,事实上它实际上会转换为/从 Latin-1 而不是 ASCII。
angular - 如何在角度 7 中将用户输入转换为 UCS2 并通过 Usb Gsm 调制解调器发送消息)
我有一个 Angular 7 应用程序,它从用户那里获取输入(电话号码和消息)以使用电子串行端口发送短信。
我想在 UCS2 中编码电话号码和消息。我怎样才能将它转换为角度 7。
我找不到任何关于转换为 UCS2 的指南我已经尝试过 https://maketips.net/tip/239/convert-to-ucs2-and-from-ucs2-in-javascript
但我无法正确包含它,因为我是新手。
ascii - 使用将字符转换为 ASCII 值例程时,需要找出它实际返回的值,因为它们不是严格的 ascii
在测试我的代码使用检查字符以显示使用 ASCII 值例程的例程时,我的程序应该删除控制字符但保留用户可能输入的字符。似乎虽然 ASCII 值例程被称为“ascii”,但它不仅返回 ascii 值:给它一个 ƒ 字符返回 402。
例如,找到了这个网站 ,但我看不到 ƒ 402。
需要知道是否还有其他 402 以上的 ascii 代码需要用来测试我的代码。编写“ascii”的软件内部使用的字符集使用 UCS2。找到的网站没有提到 USC2。
unicode - UCS-2 未知字符
从下面的链接我可以看到 UCS-2 的一些未知字符。那些是什么?为什么那些不为人知?所以我们不能解码它们?
http://www.columbia.edu/kermit/ucs2.html
基本上用户正在向我们的路由器发送 ucs-2, dcs 8 消息。但是当我解码它时,我会得到一些垃圾字符。例如:D83E DD13 --> 打印为 ? 或一些垃圾,如何在文本文件中以适当的值打印和查看它们。
谢谢和问候, 阿什维尼