本文目录一览:
- 1、弱弱的问一句,C语言能不能实现字符串的编码格式转换 GB2312toUTF-8?
- 2、linux C语言:如何在ISO8859-1和GB2312字符编码之间互相转换
- 3、用c语言怎样得到一个汉字的GB2312编码
弱弱的问一句,C语言能不能实现字符串的编码格式转换 GB2312toUTF-8?
其实 linux 和 windows 的系统函数都是C函数,并且提供了GB2312toUTF-8的函数,所以C语言是可以实现转码的。以下是windows的例子:int num = ::MultiByteToWideChar(CP_ACP, 0, "你好", -1, NULL, 0);wchar_t* m_arrayShort = new wchar_t[num];::MultiByteToWideChar(CP_ACP, 0, "你好", -1, m_arrayShort, num); int len = ::WideCharToMultiByte (CP_UTF8, 0, (LPCWSTR)m_arrayShort, num, 0, 0, NULL, NULL);char *tmpPT = new char[len+1];::WideCharToMultiByte(CP_UTF8, 0, (LPCWSTR)m_arrayShort, num, tmpPT, len, NULL, NULL);tmpPT[len] = 0;
linux C语言:如何在ISO8859-1和GB2312字符编码之间互相转换
JAVA有一个public String(byte bytes[], Charset charset)函数可以用指定字节数组和编码来构造字符串。一个public byte[] getBytes(Charset charset)函数把字符串按指定编码来得到字节数组。可以用这两个函数来实现编码转换。
下面是一个简单的例子,注意一下例子中的文字本身的编码,最好在自己的环境中用gb2312重新输入,不然可能是乱码。当然转换后输出肯定有一个是乱码,也肯能都是乱码。根据你的编辑器的编码格式有关。public class EncodingTest
{
public static void main(String[] args)
{
try
{
String gb = new String("国标2312".getBytes(),"gb2312");
System.out.println(gb);
byte [] b = gb.getBytes("gb2312");
String ios = new String(b,"ISO-8859-1");
System.out.println(ios);
} catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}
}
}
用c语言怎样得到一个汉字的GB2312编码
源代码是GB2312编码方式写的就比较简单
void printgb(unsigned char* s) {
while (*s) {
if (*s = 0x7f) {
printf("%02x%02x ", *s, *(s+1));
s += 2;
}
else {
printf("%04x ", *(s++));
}
}
}
int main() {
printgb("2017你好中国great china");
return 0;
}