十六进制字符串'\xd3'也可以表示为:Ó.
我发现将十六进制字符串的字符表示形式提供给控制台的最简单方法是:
print unichr(ord('\xd3'))
Run Code Online (Sandbox Code Playgroud)
或者用英语,将十六进制字符串转换为数字,然后将该数字转换为unicode代码点,最后将其输出到屏幕.这似乎是一个额外的步骤.有没有更简单的方法?
在C++中,有一种方法可以将char转换为int并获得ascii值.有没有这样的方法用qchar做同样的事情?由于unicode支持如此多的角色,其中一些实际上看起来很相似,因此有时很难分辨出一个人在处理什么.显式代码点或可用于获取此类代码的数字将非常有用.
我搜索了一个网站和这个网站寻求解决方案,但到目前为止没有运气,Qt文档也没有多大帮助,除非我忽略了一些东西.
先感谢您!
编辑:
也许我对此事不够清楚,抱歉.
这是一些代码:
char chChar = 'a';
cout << (int)chChar; // will output 97, not 'a'
Run Code Online (Sandbox Code Playgroud)
此外,Qt允许这样:
QChar ch = 'a';
if(ch == 0x61)
//...
Run Code Online (Sandbox Code Playgroud)
据我所知,必须有一些与ch对象中的unicode代码点相关的信息.有可能把它从那里拿出来吗?
我想比较字符,看看它们是否匹配.我无法弄清楚为什么它不起作用.我期待true输出,但我变得虚假.
character: "a"
word: "aardvark"
(first word) = character ; expecting true, getting false
Run Code Online (Sandbox Code Playgroud) 为什么最大Unicode代码点限制为0x10FFFF?是否可以通过UTF-16,UTF-8等任何编码方案在此代码点上方表示Unicode(例如0x10FFFF + 0x000001 = 0x110000)?
假设我的Haskell函数被赋予一个输入,该输入应该是一个unicode代码点的编号.如何将其转换为相应的字符?
例:
123到'{'.
我需要用代码点和换行符做一些事情.我有一个带有char代码点的函数,如果\r它需要表现不同.我有这个:
if (codePoint == Character.codePointAt(new char[] {'\r'}, 0)) {
Run Code Online (Sandbox Code Playgroud)
但这非常难看,当然也不是正确的做法.这样做的正确方法是什么?
(我知道我可以对数字13(十进制标识符\r)进行硬编码并使用它,但这样做会让我不清楚我在做什么......)
我正在创建一项服务,可以“走向国际”到非英语市场。我不想将用户名限制为 ASCII 字符范围,但希望允许用户指定他们的“自然”用户名。好的,使用 UNICODE(并说 UTF-8 作为我的用户名文本编码)。
但!我不希望用户创建包含“符号”代码点的“非名称”用户名。例如,我不想允许像 ??????øøøøø 这样的用户名。
是否有 UNICODE 的“符号”代码点列表,我可以检查(可能使用正则表达式)以接受/拒绝给定的用户名?
谢谢!
在C++中,可以使用这种表示法创建一个UTF-8字符串:"\uD840\uDC50".
但是这在PHP中不起作用.有类似的符号吗?
如果没有,是否有任何内置的方法来创建一个知道其Unicode代码点的UTF-8字符串?
为什么UTF-16在UCS数据库中有保留范围?
UTF-16只是一种使用一个或两个表示字符标量值的方法unsigned 16-bits,这些值的布局不应与字符标量值相关,因为我们应该应用一些算法来从这种表示中获取实际的字符标量值.
假设保留范围D800-DBFF并且DC00-DFFF不在UCS数据库中保留,并且还有另一种UTF-16表示,它可以表示0-7FFF单个范围内的所有字符unsigned 16-bits,当设置高位时,则跟随另一个16位.比特,对于字节顺序标记,我们将保留两个可能的值,就是这样.
如果我错了,你可以向我解释一下.
谢谢
我正在用Java 10来处理Unicode字符。
我正在使用java.text.BreakIterator包。对于此输出:
myString="ab" hex=0061d835dcde0062
myString.length()=4
myString.codePointCount(0,s.length())=3
BreakIterator output:
a hex=0061
hex=d835dcde
b hex=0062
Run Code Online (Sandbox Code Playgroud)
似乎正确。
使用相同的Java代码,然后输出:
myString="G?íl" hex=0047033200ed006c
myString.length()=4
myString.codePointCount(0,s.length())=4
BreakIterator output:
G? hex=00470332
í hex=00ed
l hex=006c
Run Code Online (Sandbox Code Playgroud)
似乎也正确,除了codePointCount = 4。
为什么不是3,并且有没有使用BreakIterator来获得3值的方法?
我的目标是确定字符串的所有(输出)字符是否都是16位,还是存在替代字符还是组合字符?