英文XP下读access的中文为乱码,急在线等

huziwu 2009-08-28 02:58:47
我的程序在中文XP下运行,一切正常!!!
但是到英文XP下运行,所有从access数据库中读出的中文都显示为???,如果不是从数据库中读,直接在代码中赋值或从ini文件中读取,则可以正常显示中文。

我的程序是VC2005(VC6也试过一样结果),采用ADO连接access,采用Unicode与非Unicode编程都不行,结果还是一样。

网上找了,有的说是字符集不同,但是不知如何设置access的字符集,听说默认是ANSI,不知道怎么改!!!很多人遇到同样的问题,但大部分都是网页方面的。

也有说不能直接在access中输入中文,,要用程序输入。我用如下代码:
_variant_t GetVal;
CString csTmp;
while(!m_pRecordset->adoEOF)
{
GetVal = m_pRecordset->GetCollect(_T("Chinese"));//读取中文字段
m_pRecordset->PutCollect(_T("Chinese"), GetVal);//重新写回

//将PutCollect()换成用注释掉的代码:如下,中文系统正常,英文系统运行完下面代码后,整个库不能打开了
//库中还有别的很多张表,打开时提示格式错误
//csTmp = (LPCSTR)_b_str_(GetVal);
//csTmp+=_T("_New");
//m_pRecordset->PutCollect(_T("Chinese"), )_b_str_(csTmp) );
m_pRecordset->Update();
m_pRecordset->MoveNext();
}

期待高手解决,问题很急!!!!!!
解决后马上结贴
...全文
195 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
soliddream66 2009-08-28
  • 打赏
  • 举报
回复
ADODB.Stream对象将字节流转换为字符流
并设置Charset 为 "GB2312"

http://www.juyo.org/juyo/work/Adodb-Stream/
huziwu 2009-08-28
  • 打赏
  • 举报
回复
问题已经在access专区得到解决了!已结贴

现在想问下:怎么设置ADO编码方式?

解决后马上结帖,
huziwu 2009-08-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 soliddream66 的回复:]
应该要在ADO读access数据之前设置ADO的编码方式

另外要设置access的编码方式为Unicode或是GB的
[/Quote]
怎么设置ADO编码方式,能讲清楚点吗?谢谢
skybblue 2009-08-28
  • 打赏
  • 举报
回复
使用MultiByteToWideChar将从数据库中读出来的字符串转换成Unicode编码的就应该没问题了.

WCHAR wszUserName[UNLEN+1]; // Unicode user name
WCHAR wszDomain[256];
LPBYTE ComputerName;

struct _SERVER_INFO_100 *si100; // Server structure
struct _USER_INFO_2 *ui; // User structure

// Convert ANSI user name and domain to Unicode

MultiByteToWideChar( CP_ACP, 0, UserName,
strlen(UserName)+1, wszUserName,
sizeof(wszUserName)/sizeof(wszUserName[0]) );
MultiByteToWideChar( CP_ACP, 0, Domain,
strlen(Domain)+1, wszDomain, sizeof(wszDomain)/sizeof(wszDomain[0]) );
soliddream66 2009-08-28
  • 打赏
  • 举报
回复
应该要在ADO读access数据之前设置ADO的编码方式

另外要设置access的编码方式为Unicode或是GB的
Ghost90 2009-08-28
  • 打赏
  • 举报
回复
应该跟程序没关系,Access数据库到英文系统下的问题吧,直接打开Access数据库看是不是也都是??,装个Access的补丁把。如果英文系统没装Access就是ADO的事装个ADO的中文补丁(如果是用ADO连的数据库)
huziwu 2009-08-28
  • 打赏
  • 举报
回复
To flyjalor:
你回复的这段话,我也在网上找到过,但是那是解决网页的,而且是使用ASP读取access。

而我要的是在我的开发环境下解决乱码问题!!!!!

VC2005 + ado + access 来实现我的界面多语种,英文系统下读中文出乱码!!!!!
flyjalor 2009-08-28
  • 打赏
  • 举报
回复
A、消除链接Access文件的乱码
  由于国外的免费主页空间容量大、而且支持ASP,于是许多朋友都使用这类主页空间,不过国外的ASP服务器一般不支持中文数据库,因此假如你的网页上有一个链接指向Access数据库文件,当你点击该链接打开Access文件时,文件中的中文内容就会显示乱码。
  为了消除这种乱码,你可以在链接数据的那个文件中加入下面的句子:
  <%@ language="vbscript" codepage="936" %>
  假如还不能消除乱码,请将你的数据库版本改为Access97,这样即可让国外ASP服务器支持中文数据库,从而消除乱码了。


B、godaddy虚拟主机access数据库中文乱码的解决方法
非程序生成的文字可以显示。但程序生成的文字就只有E文可以显示了。中文全是?号,这是数据库乱码引起的
那么解决方法可以考虑如下:
方法一:
使用 Microsoft Access 2000 打开数据库,选择工具菜单>数据库实用工具>转换数据库>到早期 Access 数据库版本。OK!
方法二:
后来订阅了微软的新闻组,在微软的新闻组dotnet.framework.aspplus.general中发现有讨论这
个问题的文章,方法为添加<%@ CODEPAGE = "936" %>到每一页的开头,有点类似于jsp中的
<%@ page c%>
赶紧测试了一下,果然OK!!!
例子如下面所示:
<%@ CODEPAGE = "936" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.ADO" %>
<%@ Import Namespace="System.Globalization" %>
<html>
<head>
<meta http-equiv="Content-Type" c>
</head>
方法三:
添加一个config.web文件到
web目录下,
建立一个文件config.web,内容如下,放在WEB目录下
<configuration>
<globalization
requestencoding="utf-8"
resp
/>
</configuration>


C、ASP读取ACCESS数据库中文显乱码的问题!
刚刚发现自己站点读取数据库时候出现乱码..就在网上找了点原因解决方法:
直接打开ACCESS数据库查看内容没有乱码,可是asp从ACCESS数据库中读取出来的中文全是乱码。页面<HEAD>中也加了
<META http-equiv=Content-Type content="text/html; charset=gb2312">
原因:是少了这句
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%@LANGUAGE="xxx" CODEPAGE="936"%>
一般又分为<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>和<%@LANGUAGE="javascript" CODEPAGE="936"%>两种。LANGUAGE="VBSCRIPT"和LANGUAGE="javascript",申明ASP当前使用的编程脚本分别为VBSCRIPT和javascript。一般在程序第一行进行申明。当使用该脚本申明后,以下所有程序运用全得符合该脚本语言的所有语法,两者不能混淆使用,否则出错。我们在写ASP时,一般不做限定,因为经常会在一ASP页面写不同的脚本,当然这也是以牺牲执行效率为代价的。
CodePage:可读/可写。整型。定义用于在浏览器中显示页内容的代码页。代码页是字符集的数字值,不同的语言使用不同的代码页。例如,ANSI代码页为1252,日文代码页为932,简体中文代码页为936。一般情况下,当你上传到国外网页空间,或者提取数据库记录等出现乱码时,就采用这种方法解决。


jcwinner 2009-08-28
  • 打赏
  • 举报
回复
会不会要装一个语言包之类的。没碰到过,帮顶!
dirdirdir3 2009-08-28
  • 打赏
  • 举报
回复
存为2进制数组咯,不用字符串就没问题了.......
  新云网站内容管理系统是一套开源WEB的网站管理系统,采用网络中已经成熟、稳定地技术ASP+Access/SQL开发而成,通过它,您可以很方便地管理自己的网站。 但是唯一遗憾的是他没有WAP界面适配。现在我们不用担心这些,今天我们可以下载中国被爱可以在线开发的新云WAP适配程序来实现手机访问,配置极其简单。   首先我们要下载新云的适配程序,我们登陆中国被爱可以在线[www.bicyle.org]下载。解压后文件如下,安装包内是QuickWAP的组件程序,需要服务器支持QuickWAP。具体安装步骤为:将QuickWAP.dll拷贝到System32文件夹下,在开始菜单运行 regsvr32 QuickWAP.dll 即可。操作系统为Windows 2003、XP装有IIS6或IIS5。如果为虚拟主机,请让服务商协助安装。   新云的网站代码如下,在新云的根目录下新建“WAP”文件夹,然后将新云WAP适配的内容拷贝到WAP文件夹下。   然后我们打开WapConfig目录下的WapConfig.asp,进行相关设置。尤其是要修改XML.MdbPath,用于设置新云WEB网站的相对路径。 <% '设置网站信息。 XML.SiteName="新云网站内容管理系统" '设置网站的名称。 XML.SiteTitle="新云网站内容管理系统" '设置IE浏览时网站的标题。 XML.SiteWebUrl="http://www.bicyle.org" '网站WEB地址 XML.SiteWapUrl="http://wap.bicyle.org" '网站WAP地址 XML.SiteLogo="Images/Logo.jpg" '设置首页的LOGO图片。 CSSFile="Style.css" '设置CSS样式的文件地址。 XML.MdbPath="../Database/newasp.asa" TextLong="1000" '每页字数 '以下为发邮件的信息设置。 XML.MailServerUserName="cnbikeonline@163.com" XML.MailServerPassword="" XML.MailSmtp="smtp.163.com" XML.MailSiteName="新云网站内容管理系统" XML.MailWebUrl="http://www.bicyle.org" XML.MailWapUrl="http://wap.bicyle.org" XML.MailResultFileName="Success.asp" '以下为系统注册序列号。 XML.SoftSerialNumber="" '域名注册码。 XML.IPSerialNumber="61TQ-K5F0-2881-5X8F" 'IP注册码。 XML.CDiskSerialNumber="" 'C盘序列号注册码。 '设置简体繁体 XML.ChineseType="Simple" '设置语言简繁体中文,简体:Simple ,繁体:Complex 'ICPbeian ICPNumber="冀ICP备09012285号" 'ICPbeian号。 %>   设置完毕后,保存即可。这时我们就可以通过你的网站域名,比如为www.bicyle.org,那么WAP访问为www.bicyle.org/wap。或者你可以将wap.bicyle.org域名绑定子目录wap,这样你可以通过wap.bicyle.org访问。   该代码的好处在于WAP完全自动适配WEB新闻内容,过滤掉了其中的HTML代码,因此虽然无法浏览文中的插图,但是不至于手机访问发生错误。另外下载栏目的软件缩略图,是需要AspJpeg组件支持的,QuickWAP内嵌的自动缩略图功能会自动检测是否已经创建了缩略图,如果创建了,则不会重新生成图片,节省了服务器资源。当然如果没有AspJpeg支持,那也不会发生错误。   既然是WAP/WEB同步适配,那么自然WAP是不需要后台的,所有维护是通过新云自带的WEB站来管理的。 关于乱码问题   我们通常会在IE浏览器中打开前台,然后继续登陆后台,这样就会使后台产生乱码。原因在于QuickWAP的所有代码都是基于UTF-8编码方式的,所以在任何浏览器上都不会乱码,但是当在同一浏览器浏览了WAP网页,然后继续打开后台,浏览器依旧保持UTF-8编码方式,这样会造成使用GB2312编码的后台产生乱码。   解决方法是,关闭并重新启动IE浏览器,然后不要打开前台,直接输入后台地址,比如http://wap.bicyle.org/admin。至于WAP页面的浏览最好再下载一款Opera浏览器。这样,Opera专门浏览WAP,IE专门进行WEB管理,从此不会出现乱码现象。   QuickWAP之所以采用UTF-8而非GB2312则是因为UTF-8可以看作是大字符集,它包含了大部分文字的编码。使用UTF-8的最大好处是其他地区的用户(如香港台湾)和国外用户无需安装简体中文支持就能正常观看你的文字而不会出现乱码
Office百宝箱29.0是著名微软办公软件Office(Microsoft Office of Addins)增强超级大型插件。包括380个菜单功能和200个左右自定义函数,集580个宝贝于一身,但体积小于30MB。当安装Office百宝箱后,分别会在Excel、Word、PowerPoint、Outlook、Publisher、Access、VBA编译器等的主程序界面将产生【万能百宝箱】菜单及相应的扩展功能菜单或函数。总共包括380多个子菜单,并在Excel 2016或者2013中将产生【经典】与【万能百宝箱】功能区,而在其函数向导对话框中也新增200个左右新的Excel函数。Office百宝箱多国语言全家福版,包括Excel万能百宝箱、Word万能百宝箱、PPT百宝箱、Outlook万能百宝箱、Office编程百宝箱、Publisher万能百宝箱、VBA百宝箱、Access百宝箱等。所有功能Office2003--Office2019+繁简体通用,XP至WIN10繁简系统通用。功能适用于Office 2003、2007、2010、2013、2016、2019。支持中英文显示与繁简体操作系统、拥有30多款华丽的皮肤界面。Office百宝箱全家福系列,为中汛软件科技公司(梁瑞春)荣誉出品,现有: Excel万能百宝箱、Word百宝箱、PowerPoint百宝箱、Outlook百宝箱、Publisher百宝箱、Access百宝箱、VBA百宝箱、WPS百宝箱、Office编程百宝箱、银河ERP企业管理平台、银河ERP等企业信息化办公系列产品,欲知更多资讯,敬请登录软件版权作者(Jackey.Liang--梁瑞春) 中汛软件科技官方网站。图片批量尺寸及嵌表格式导图、导入多行列图片具备18项可设置参数,多达80种组合导入方式,满足各行业不同需求的图片导入导出与规范排版。表达式计算精灵让数学函数及复杂公式表达式全自动计算一切变得那么轻巧与高效,且能与EXCEL智能交互操作。工程解密功能可以解除VBA工程不可查看的OFFICE工程文档,解除后重新打开文档可100%准确还原源代码,是VBA开发者的必备利器。采用字典补码查漏纠错技术实现台湾繁体系统中繁简转换与GB2BIG5转换准确率达100%,达到微软同效功能。每款功能千锤百炼。更内置了比Vlookup()函数更强大且好用的VlookupIn()函数。能对VBA宏程式能实现撤销与还原操作,防止鼠标误点功能与误操作。在EXCEL另存DBF功能的基础上还可以轻松实现对所有SQL数据库(*.DBF)文件进行加密或解密操作,防止重要内容不被随意读写操作。全能语音朗读器具备英语学习复读机的功效可重复及延时朗读。存储格朗读机即时响应按回车时朗读指定的或偏移行列的存储格内容。原创批量图片排序功能,誉为“图片排版大师”,有21种样式可选,能批量将工作表中指定存储格范围的图片快速排序并输出到新表中。原创无穷加密与解密功能,能对选定的存储格或文本内容进行军方级加密保护,使其显示只包括英文字母与数字及标点符号的“乱码”。支持XP至WIN10多个操作系统完美兼容,实现无缝隙对接,U盘版用户除了在原有可换机使用的基础上,实现XP/WIN7/WIN8/WIN10通行无阻。批量二维码识别、批量二维码生成、表格数据汇总、全自动检索录入、批量改图片大小、批量导图、批量导入批注、等功能一应俱全。原创Office编程百宝箱,集30多个VBA开发功能,为广大VBA编程爱好者的福音与必备利器。轻松实现一键关机、一键开机、锁机待机等。由全球顶尖级水平微软MVP专家与财会管理信息团队历时多年开发,是与OFFICE用户与爱好者共同努力的结晶,被誉为'全能的办公瑞士军刀'。

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧