如何将一个汉字用C语言将其转换成Unicode编码最好直接编成UTF-8,是不是vc里面有函数可以直接编求程序

如何将一个汉字用C语言将其转换成Unicode编码最好直接编成UTF-8,是不是vc里面有函数可以直接编求程序,第1张

对,有。

#define _CONVERSION_USES_THREAD_LOCALE

#include <atlbaseh>

#include <atlconvh>

#include <stdioh>

#include <stringh>

int main()

{

    USES_CONVERSION;

    _acp = CP_ACP;

    char buf[3] = {0};

    buf[0] = getchar();

    buf[1] = getchar();

    wchar_t tmpbuf[2] = {0};

    tmpbuf[0] = A2W(buf)[0];

    _acp = CP_UTF8;

    char utf8buf[4];

    strcpy(utf8buf, W2A(tmpbuf));

    

    int i = 0;

    while(utf8buf[i] != 0)

    {

        printf("%02x ", (unsigned char)utf8buf[i]);

        ++i;

    }

    return 0;

}

如果不是VC60而是新的VC的话是新的写法。

你可以输入一个日进去看看

这个函数,可以用来生成任意字符的16进制码,Unicode和ANSI都支持:

Function GetHex(ByVal Str1 As String, IsANSI As Boolean) As String

  Dim b1() As Byte

  If IsANSI Then b1 = StrConv(Str1, vbFromUnicode) Else b1 = Str1

  Dim s1 As Long, n1 As Long, l1 As Long

  l1 = LBound(b1)

  n1 = UBound(b1) - l1 + 1

  GetHex = Space(n1  2)

  For s1 = 1 To n1

   Mid(GetHex, s1 + s1 - 1, 2) = Replace(Format(Hex(b1(s1 + l1 - 1)), "@@"), " ", "0")

  Next

End Function

使用:

DebugPrint "ANSI码:";GetHex("我们",True)

DebugPrint "Unicode码:";GetHex("我们",False)

显示结果:

ANSI码:CED2C3C7

Unicode码:1162EC4E

上面的是正确结果。你给的“ANSI是 89E43F,unicode是 11623F00”是错的,你随便找一个16进制编辑器验证下吧。两个汉字的ANSI码怎么也都是4字节的不可能是3字节的,Unicode汉字中也不会有“00”

%cd%f8%d5%be%d2%d1%be%ad%b8%c4%b0%e6%a3%ac%c7%eb%b5%e3%bb%f7%c1%b4%bd%d3%c8%a5%d0%c2%cd%f8%d5%be

上代码:

import javautilScanner;

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(Systemin);

        Systemoutprintln("请输入汉字:");

        String input = scnextLine();

        if (inputlength() == 0) {

            Systemoutprintln("输入错误");

            return;

        }

        Systemoutprintln("汉字转unicode结果:");

        char[] chars = inputtoCharArray();

        for (int i = 0; i < charslength; i++) {

            String unicode = IntegertoHexString(chars[i]);

            if (unicodelength() <= 2) {

                // 不足四位前面加0补齐

                unicode = "00" + unicode;

            }

            unicode = "\\u" + unicode;

            Systemoutprintln(chars[i] + ": " + unicode);

        }

    }

}

我们所见的汉字从形体变成电脑的内码

1)需要汉字编码,anzi bianma汉字编码Chinese character encoding 为汉字设计的一种便于输入计算机的代码。

汉字信息处理系统一般包括编码、输入、存储、编辑、输出和传输。编码是关键。不解决这个问题,汉字就不能进入计算机。

2)计算机中汉字的表示也是用二进制编码,同样是人为编码的。根据应用目的的不同,汉字编码分为外码、交换码、机内码和字形码。

外码(输入码);

交换码(国标码);

机内码;

汉字的字形码;

汉字地址码;

3)符合规范的字符集。如果超出了输入法所支持的字符集,就不能录入计算机。

① GB2312-80字符集,中文名国家标准字符集(GB=GuóBiāo国标)。

② Big-5字符集,中文名大五码,是台湾繁体字的字符集。

③ GBK字符集,中文名国家标准扩展字符集(GB=GuóBiāo国标;K=Kuò扩,即扩展),兼容GB2312-80标准,包含Big-5的繁体字,但是不兼容Big-5字符集编码。

④ 转码软件,Big-5 (台湾繁体字)与GB2312-80 (大陆简体字),编码不相兼容,字符在不同的 *** 作系统中便产生乱码。文本文字的简体与繁体(文字及编码)之间的转换需经转码软件完成。

参考:>

以上就是关于如何将一个汉字用C语言将其转换成Unicode编码最好直接编成UTF-8,是不是vc里面有函数可以直接编求程序全部的内容,包括:如何将一个汉字用C语言将其转换成Unicode编码最好直接编成UTF-8,是不是vc里面有函数可以直接编求程序、求VB将中文字符转换成相应的16进制编码的源代码、中文字怎么 转 gb2312 编码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10209386.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存