输入法与中文乱码问题

问题描述

我用VC写了一个小程序,从Access数据库读取数据,然后拷贝到剪贴板,然后输出到文本文件。中文出现乱码。此时,默认输入法是英文。但是很奇怪,当把系统的默认输入法修改为汉字输入法,重新启动程序,拷贝到剪贴板的内容再输出到文本文件中就是好的,不乱码。在两种情况下我都跟踪了程序中汉字的编码,将char转换为BYTE类型的值是一样的。比如“汉”这个字GB2312的编码是0xBABA对应十进制的值是a=186,b=186取值如下:BYTEa=*gb2312;BYTEb=*(gb2312+1);文本文件编码采用系统默认编码,操作系统为中文windowsXP。在乱码的情况下,拷贝到文本文件的值在16进制下查看为0x6F6F,而不是0xBABA。但是拷贝到Unicode格式的文本文件中会变成:BA00BA00,被扩展了两个0.非常奇怪。而“汉”这个字,其Unicode编码值应该是0x6c49,在文件中该是496C这样排列。请指点,如何来处理才能不靠切换默认输入法为中文来实现输出到文本文件不乱码。

解决方案

解决方案二:
这个和输入法没有关系。和系统默认字体编码codepage有关系你用UTF-8格式做拷贝这样就会解决你这个问题。
解决方案三:
字体转换关系如下ansi==>>unicode==>>UTF-8utf8==>>unicode>>ansi
解决方案四:
是把汉字存在数据库中的时候把它转换为utf-8?然后读出来的自然就是utf-8,然后把utf-8转换为unicode?然后再转换为ansi,最后这步是在程序中实现么?我不转换,直接申请三个字节的空间,比如char*a=(char*)malloc(3);然后,直接把这三个字节赋值*a=0xBA;*(a+1)=0xBA;*(a+2)=0x00;然后把这三个字节拷贝到剪切板。其实,你从utf-8==>unicode==>ansi最后还不是要把编码转换成GBK的编码么?“汉”字的ansi编码就是0xBABA,但是从剪切板拷贝到文本文件里面就变了,变成6F6F了。

时间: 2024-12-01 10:20:17

输入法与中文乱码问题的相关文章

解决云手写输入法输入中文时出现乱码

在使用云手写输入法的时候有没有碰到过输入的汉字变成了(图1)中显示的乱码?这个要改怎么解决?在这里就来告诉大家云手写输入法输入中文时出现乱码的解决方法! 图1 右击电脑右下角输入法的图标会出现如(图2)显示的修改框 将(英文): 图2 改回(中文): 图3 然后退出软件,再次运行,应该就不会出现乱码了.

Centos中文乱码问题的解决

在使用CentOS 系统时,安装的时候可能你会遇到英文的CentOS系统,在这中情况下安装CentOS系统时是默认安装(即英文).安装完毕后,出现的各种中文乱码.那么,我们如何解决这种问题呢. 一.CentOS系统访问 g.cn ,发现中文乱码. 于是用以前的方式:yum -y install fonts-chinese CentOS系统安装后,还是不能显示中文字体.我使用 gedit 编辑源码,其中文注释也为乱码. 后来,终于找到以下方法可以解决,需要两个中文支持的包: fonts-chine

四步解决Linux系统中出现中文乱码问题

  在使用CentOS 系统时,安装的时候可能你会遇到英文的CentOS系统,在这中情况下安装CentOS系统时是默认安装(即英文).安装完毕后,出现的各种中文乱码.那么,我们如何解决这种问题呢. 一.CentOS系统访问 g.cn ,发现中文乱码. 于是用以前的方式:yum -y install fonts-chinese CentOS系统安装后,还是不能显示中文字体.我使用 gedit 编辑源码,其中文注释也为乱码. 后来,终于找到以下方法可以解决,需要两个中文支持的包: fonts-chi

CentOS 安装搜狗输入法以及解决中文乱码

一.安装搜狗输入法 首先要确保系统中已经安装了中文输入法. 如果你在安装系统时选择了中文,则中文输入法默认就会安装:如果你安装时选择了英文,则必须在安装时选择安装中文输入法,否则不会安装,即使你忘了选择,还是可以在装好系统之后安装.安装方法也非常简单,只需要联网后执行如下命令即可安装 #sudo yum install "@Chinese Support" 二.解决中文乱码 查看系统支持字符集: #locale -a 安装英文版默认的字符集配置为: # cat /etc/sysconf

网站开发防止中文乱码需要了解的codepage的重要性小结_应用技巧

相关的题外话: 一.操作系统window系统内部都是unicode的.文件夹名,文件名等都是unicode的,任何语言系统下都能正常显示. 二.输入法:微软拼音输出的是Unicode的,智能ABC输出是简体中文的(所以智能ABC在非简体中文系统根本不能用,只能打英文). 三.网页的textarea网页的textarea是用unicode显示的.所以往里打什么字都能显示.而一些flash做的输入框就不行了. 四.Access2000access里面保存的数据是unicode的,在任何语言系统下都能

zip压缩解决文件名中文乱码问题

使用jdk自带的zip工具类Java.util.zip.ZipEntry,java.util.zip.ZipFile,java.util.zip.ZipInputStream,java.util.zip.ZipOutputStream 进行zip压缩时,没法解决文件名中文乱码问题 这里使用apache 旗下的commons-compress 库,官网是:http://commons.apache.org/proper/commons-compress/download_compress.cgi

使用Wordpress插件时出现中文乱码的解决方法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 用wordpress建网站的好处就在于,可以使用N多主题和N多的插件,由于wordpress在国外的使用时期较长,很多插件都是国外的用户开发的.对于中文的支持不是很好.经常使用WP一定会遇到插件编码问题,今天影子给大家讲一下关于使用wordpress插件时出现中文乱码的解决方法. 一.起因: 今天就遇到一个插件,输入中文后,保存,查看,显示输

jdk1.6环境搭建netbeans的中文乱码

中文|中文乱码 增加支持库联接cd /usr/binln -sf /opt/jdk1.6.0/bin/javacln -sf /opt/jdk1.6.0/jre/bin/java 修改.bashrcexport JAVA_HOME=/opt/jdk1.6.0export JAVA_BIN=/opt/jdk1.6.0/binexport PATH=$PATH; $JAVA_HOME/binexport CLASSPATH=.; $JAVA_HOME/lib/dt.jar; $JAVA_HOME/l

Linux环境下"Font font = new Font("黑体", Font.BOLD, 18)"[BufferedImage~Graphics~drawString]中文乱码

Linux环境下"Font font = new Font("黑体", Font.BOLD, 18)"[BufferedImage~Graphics~drawString]中文乱码,windows下不会乱码,但在linux下nginx和tomcat部署后出现乱码.方框.问号等等,不能认清楚!!! 先说说系统: Microsoft Windows [版本 10.0.10586] (c) 2015 Microsoft Corporation.保留所有权利. ------