C ++如何使用utf8十六进制代码打印utf8符号?

时间:2018-10-21 14:40:29

标签: c++ utf-8

例如,我有一个符号的utf8十六进制代码:

process.on('uncaughtException', function (err) {
    console.error(err);
    console.log("Node NOT Exiting...");
});

如何使用此十六进制代码将此字符e0a4a0 打印到c ++文件中?

2 个答案:

答案 0 :(得分:1)

我看到您可以采用两种方法: 首先是按字面意义使用"ठ",其次是按转义序列\u\x对其进行编码(两者均无效,因此我没有示例)

std::cout<<"ठ\xe0\xa4\xa0"<<std::endl;

但是我认为对您来说最好的选择是以二进制模式打开文件,然后将那些字节放在那里。

答案 1 :(得分:1)

您需要分别输出每个字节。

例如,如果您拥有:

public class TaxCodeValidator implements ConstraintValidator<TaxCode, String> {

    private String country;

    @Override
    public void initialize(TaxCode constraintAnnotation) {
        country = constraintAnnotation.country();
    }

    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        if (value == null || value.isEmpty())
            return true;
        try {
            //my logic checking the country
        } catch (Exception e) {
            return false;
        }
    }

}

您需要将第一个字节(前两个字符“ c3”)转换为int,转换为char并输出,然后将第二个字节(“ 86”)转换为输出。

针对这种特殊情况(“ c386”)的转换:

c386

“ c3” = 44 * 16 + 3 = 707,“ 86” = 8 * 16 + 6 =134。将这些int值转换为char并输出它们,您便拥有了自己的角色。