如何用C语言实现汉字和Unicode编码的转换 求程序

如何用C语言实现汉字和Unicode编码的转换 求程序,第1张

字转换:wctomb、mbtowc,wc 指橡橡 Wide charactor,mb 指 Multi-byte。

字符串转换:wcstombs、物如搜mbstowcs,wcs 和 mbs 的 s 指 string。

这 4 个函数是 C 标准函数库函数中的。如果只是在 Windows 平台下编程,可直接调用 Windows API 函数 WideCharToMultiByte 和 MultiByteToWideChar 实现。但是如果调用标准库函数的话,在 Linux 下也是有效的。调用标准库函数,首先必须包含 locale.h 并调用 setlocale(LC_ALL, "") 后才能正确转换。Windows 下的 Multi-byte 是 ANSI 编码的,Wide charactor 是 Unicode (UTF-16) 编码,而 Linux 下的 Multi-byte 是 UTF-8 编码的,Wide charactor 是 Unicode (UTF-32) 编码。

#include <stdio.h>

#include <stdlib.h>

#include <locale.h>罩历

int main(void)

{

char str[12]

wchar_t wstr[] = { 0x52B3, 0x788C, 0 }

setlocale(LC_ALL, "")

wcstombs(str, wstr, sizeof(str)/sizeof(char))

printf("%s", str)

return 0

}

Unicode(万国码)是一个国际标准字符集,是国际上电脑行业系统字符集的标准,其版本不断更新,目前的6.2版含有7.68万以上汉字和数万个包括各国语言文字及图案的图形符号,各版本并如没基本上是向橡明下兼容的,因此,万国码的汉字用不着再绝纳加以转换,高版本的汉字在低版本中一般都能显示出来,除非是低版本中的缺字没法显示,但在低版本中也没法转换。

function native2ascii(nativecode) {

    nativecode = nativecode.split("")

    var ascii = ""

    for (var i = 0 i < nativecode.length i++) {

  携粗游      var code = Number(nativecode[i].charCodeAt(0))

    辩销    if (code > 127) {

            var charAscii = code.toString(16)

            charAscii = new String("0000").substring(charAscii.length, 4) + charAscii

            ascii += "\\u" + charAscii

        } else {

            ascii += nativecode[i]

        }

    }

    return ascii

}

function ascii2native(asciicode) {

    asciicode = asciicode.split("\\u")

    var nativeValue = asciicode[0]

    for (var i = 1 i < asciicode.length i++) {

        var code = asciicode[i]

        nativeValue += String.fromCharCode(parseInt("0x" + code.substring(0, 4)))

        if (code.length > 4) {

            凳橘nativeValue += code.substring(4, code.length)

        }

    }

    return nativeValue

}

var input = prompt('请输入消息')

console.log(native2ascii(input))

console.info(ascii2native(input))


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

原文地址: http://outofmemory.cn/yw/12552863.html

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

发表评论

登录后才能评论

评论列表(0条)

保存