Encoding 将标准::字符串从UTF8、UTF16、ISO88591转换为十六进制

Encoding 将标准::字符串从UTF8、UTF16、ISO88591转换为十六进制,encoding,utf-8,c++14,utf-16,iso-8859-1,Encoding,Utf 8,C++14,Utf 16,Iso 8859 1,我尝试从UTF8编码std::字符串,。。。到十六进制。我现在不能做的是,如果输入字符串包含来自代码页标识符(windows-1258)的特殊字符(包括越南语字符),我无法获取输入字符串的每个字符的十进制值来进行转换 首先,我将获得十进制值,然后将其转换为二进制,然后再转换为十六进制。s是我的输入字符串。s=”Ồ". 这就是我在Java中的实现方式 Charset charset = Charset.forName(Enum.valueOf(Encoding.class, encodin

我尝试从UTF8编码std::字符串,。。。到十六进制。我现在不能做的是,如果输入字符串包含来自代码页标识符(windows-1258)的特殊字符(包括越南语字符),我无法获取输入字符串的每个字符的十进制值来进行转换

首先,我将获得十进制值,然后将其转换为二进制,然后再转换为十六进制。s是我的输入字符串。s=”Ồ".

这就是我在Java中的实现方式

    Charset charset = Charset.forName(Enum.valueOf(Encoding.class, encodingType).toString());
    ByteBuffer buffer = charset.newEncoder().encode(CharBuffer.wrap(inputString.toCharArray()));
    byte[] bytes = new byte[buffer.limit()];
    buffer.get(bytes, 0, buffer.limit());
    result = new ByteField(bytes);
    return result;
            } 

“到十六进制”十六进制不是一种文本编码格式。它是一种表示数字的方式。你想用十六进制表示代码单位的数值吗?是的,这就是我现在想要的。我需要的是获得特殊字符的十进制值的方法,如”Ồ“那就是7,891@NguyễnĐứ这不是Nicol所问的。您想输出编码的UTF-8代码单元的十六进制表示还是解码的UNICODE代码点?
是Unicode码点
U+1ED2
,它是十进制7890(不是7891,它应该是
U+1ED2
以UTF-8编码单位编码为
E1 BB 92
。您在寻找哪种表示形式?我假设您想要的是代码点而不是代码单位,对吧?这需要您的代码来解析和解码UTF-8数据(即,将其转换为UTF-32),您的代码没有这样做。您已经有UTF-8和UTF-16输出,只需添加UTF-32即可。我已经编辑了我的帖子,以确保您理解我的意思。因此,codepoint of“Ồ“是
1ED2
(这是我的UTF16BE输出)和的代码单位”Ồ“is
E1 BB 92
(这是我的UTF8输出)。我不明白,我只想将输入字符串表示为十六进制,但在我的Java代码输出之后,结果是编码的UTF-8代码单元和解码的UNICODE代码点
UTF8 : E1BB92
UTF16 : FEFF 1ED2
UTF16BE : 1ED2
UTF16LE : D21E
    Charset charset = Charset.forName(Enum.valueOf(Encoding.class, encodingType).toString());
    ByteBuffer buffer = charset.newEncoder().encode(CharBuffer.wrap(inputString.toCharArray()));
    byte[] bytes = new byte[buffer.limit()];
    buffer.get(bytes, 0, buffer.limit());
    result = new ByteField(bytes);
    return result;
            }