字符串转换: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))
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)