我想要获得乘号×的Latin1代码,但是当我检查QChar内部的值时,它的值是-41'×'。
我的代码:
QString data = "×";
QChar m = data.at(0);
unsigned short ascii = (unsigned short)m.toLatin1();当我调试时,在第二行我看到QChar的值是-41'×'。
我更改了代码:
unsigned int ascii = c.unicode();但是我得到的值是215,我希望是158。
发布于 2015-06-24 03:07:08
当您在unix系统上检查man ascii时,可以看到乘号×不是ascii符号。
它的值取决于编码,有关它的UTF表示,请参见here。例如,在UTF-8上,它的值为0xC397,为两个字节。正如在unicode页面中提到的,我链接的215是以UTF-16编码表示该字符的十进制值,这是c.unicode()返回的结果。我不知道你为什么要期待158。
但是有一个ascii乘号,它是*。
发布于 2015-06-25 02:36:33
如果检查Latin1 code table,很明显×确实被编码为215或-41。Qt会给你正确的结果。
你的错误是:
×用ASCII码表示。不是这样的。我不知道你是从哪里得到Latin1编码的×应该是158的。当然,它不是来自Latin1代码表!顺便说一句,×的Latin1和UTF-8编码是相同的。
https://stackoverflow.com/questions/31010637
复制相似问题