javascript转换hex到UTF16 再将utf16转换到utf8

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript转换hex到UTF16 再将utf16转换到utf8相关的知识,希望对你有一定的参考价值。

我现在有一串hex的String,需要用js先将其转换到UTF16,再将UTF16转换到UTF8,求一个小例子或者帮我说一下思路!谢谢~

参考技术A 50javascript转换hex到UTF16 再将utf16转换到utf8 参考技术B 实用多字符编码转换工具
www.vipaq.com/WebApp/encoding追问

没有我需要的

追答

给一段hex的串

参考技术C 2vd.cn。。。。

将 Hex UTF-8 字节转换为 Hex 代码点

【中文标题】将 Hex UTF-8 字节转换为 Hex 代码点【英文标题】:convert Hex UTF-8 bytes to Hex code point 【发布时间】:2011-12-05 08:33:51 【问题描述】:

如何转换 十六进制 UTF-8 字节 -E0 A4 A4 到十六进制代码点 - 0924

参考:http://www.ltg.ed.ac.uk/~richard/utf-8.cgi?input=e0+a4+a4&mode=bytes

我需要这个,因为当我在 c# 中读取 Unicode 数据时,它会将其视为单字节序列并显示 3 个字符而不是 1,但我需要 3 个字节序列(读取 3 个字节并显示单个字符),我尝试了很多解决方案但没有得到结果。

如果我可以显示或存储一个 3 字节序列 utf-8 字符,那么我不需要转换。

senario 是这样的:

    string str=getivrresult();

在 str 中,我有一个单词,每个字符为 3 字节 utf-8 序列。

已编辑:

             string str="त";
             //i want it as "त" in str.

    Character                                   त
    Character name                              DEVANAGARI LETTER TA
    Hex code point                              0924
    Decimal code point                          2340
    Hex UTF-8 bytes                             E0 A4 A4
    Octal UTF-8 bytes                           340 244 244
    UTF-8 bytes as Latin-1 characters bytes     à ¤ ¤  

谢谢。

【问题讨论】:

请向我们展示您到目前为止所做的尝试。 真的不清楚您的输入是什么以及您想要什么输出......显示两者的示例会有所帮助。 @JonSkeet:我假设 OP 想要逆转 string.Join(" ", Encoding.UTF8.GetBytes(string).Select(x => x.ToString("X2"))); @dtb:可能,但并不完全清楚。特别是,输入是字节数组还是字符串并不明显...... BitConverter.ToString(b).Replace("-", "") 【参考方案1】:

Encoding 类中使用GetString 方法:

byte[] data =  0xE0, 0xA4, 0xA4 ;
string str = Encoding.UTF8.GetString(data);

字符串现在包含一个字符代码为 0x924 的字符。

【讨论】:

Thankyou Guffa 我得到了答案,正如你所说的那样。我正在发布它。【参考方案2】:
        //utf-8 Single Byte Sequence input
        string str = "त";
        int i = 0;
        byte[] data=new byte[3];

        foreach (char c in str)
        
            string tmpstr = String.Format("0:x2", (int)c);
            data[i] = Convert.ToByte(int.Parse(tmpstr, System.Globalization.NumberStyles.HexNumber));
            i++;
        


        //utf-8 3-Byte Sequence Output now stp contains "त".
        string stp = Encoding.UTF8.GetString(data);

【讨论】:

gag .... 跳过string.FormatConvert.ToByteint.Parse,直接说data[i] = c; 怎么样?

以上是关于javascript转换hex到UTF16 再将utf16转换到utf8的主要内容,如果未能解决你的问题,请参考以下文章

将Unicode转换为二进制

JavaScript RGB颜色与hex16进制转换

JavaScript RGB颜色与hex16进制转换

RGB 到 HEX 转换 JavaScript [重复]

如何用JavaScript实现Hex与ASCII之间的转换

JavaScript RGB到HEX转换器