我的SD卡乱码解决方案
转载请注明出处。chendesheng1988是原作者。
问题描述:射频模块读取证件信息后,串口读取的信息存到SD卡,存进去发现汉字是乱码。
解决方案:使用函数WideCharToMultiByte搞定这个问题。
关键词:unicode,ANSI,WideCharToMultiByte,LPCWSTR
解决的过程大概描述如下:
(1)把存放从串口读进来的数据的recvBuf进行强制类型转换,(LPCWSTR)recvBuf,既表示转换为32位的unicode码,也是为了满足WideCharToMultiByte函数第三个参数类型的要求
(2)根据WideCharToMultiByt函数参数的要求,定义一个接收转换后字符的buffer。可以定义为char *buffer;
int WideCharToMultiByte(
UINT CodePage,
DWORD dwFlags,
LPCWSTR lpWideCharStr,
int cchWideChar,
LPSTR lpMultiByteStr,
int cbMultiByte,
LPCSTR lpDefaultChar,
LPBOOL lpUsedDefaultChar
);
(3)再利用这个函数计算recvBuf的size,方法如下:
int size = WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)recvBuf, -1, NULL, 0, NULL, NULL);
(4)再次利用这个公式进行宽字符到多字节的转换,方法如下:
WideCharToMultiByte(CP_ACP, NULL, (LPCWSTR)recvBuf, -1, buffer, size + 1, NULL, NULL);
(5)最后利用fputc函数将,将这个buffer里的内容存到SD卡即可。方法如下:
FILE *out=NULL;
if((out=fopen("\\Storage Card\\IDinfo.txt","a+"))==NULL)
{
printf("can not open file! \n");
exit(0);
}
else
printf(" open file sucess! \n");
for(i=9;i<165;i++) //这里i的起始和终止条件是根据我的需要设的,不要奇怪
{
wchar_t ch =buffer[i];
fputc(ch,out);
}
fclose(out);
(6)使用这个方法后,我很激动把SD卡里的IDinfo.txt文件拷贝到PC上,打开那一瞬间,整整齐齐的汉字出现在我的面前,再也不是以前的乱码了。兴奋。
结语:虽然方法简单的说大概是这么个样子,但里面涉及的字符编码格式很值得我再去认真研究,搞清楚wince里的unicode,以及ANSI标准。还是愿意再写一篇学习心得,有关于这个字符编码的。在解决问题的过程中,在网上查找了大量的资料,非常感谢那些愿意在网上公开免费的分析自己知识的前辈们。我也乐于把我的心得跟大家分享。
我的SD卡乱码解决方案的更多相关文章
- 3、树莓派的配置:改静态IP、连接ssh、安装中文字体、安装谷歌输入法、增加USB电流、修改触摸屏分辨率、扩展sd卡空间、修复vi和vim乱码问题、安装配置远程桌面vnc
本博文仅作本人操作过程的记录,留作备忘.自强不息 QQ1222698 1.连接上HDMI线,插上触摸屏,插上键盘,鼠标,网线,启动.系统正常启动,但是一直闪烁,不停的黑屏,是由于触摸屏的usb口供电不 ...
- 6、android 普通日志输出到SD卡
这是本人见过写博文最负责的一个人: http://www.crifan.com/android_try_use_android_logging_log4j_to_output_log_to_sd_ca ...
- Ye.云狐J2刷机笔记 | 完美切换内部存储卡和SD卡的改法.vold.fstab
================================================================================Ye.完美切换内部存储卡和SD卡成功.v ...
- 蜂鸟A20开发板刷 cubietruck 的 SD 卡固件
美睿视讯 为蜂鸟A20准备的 MerriiLinux 功能非常简陋.所以能用上主流的 debian 或者 LUbuntu 就可以说是非常迫切的需求了.蜂鸟A20(Merrii Hummingbird ...
- SPI模式下MCU对SD卡的控制及操作命令
一.前言 SD 卡有两个可选的通讯协议:SD 模式和 SPI模式 SD 模式是SD 卡标准的读写方式,但是在选用SD 模式时,往往需要选择带有SD 卡控制器接口的 MCU,或者必须加入额外的SD卡控制 ...
- 创见WiFi SD卡破解之路
我最近搞了张Transcend WiFi SD,颇为得意.它可以让我在几秒钟内将单反(奶昔,相当便携)中拍摄的照片传到任何支持wifi的设备上.我很喜欢在旅途中拍摄和分享图片,所以对我而言,可以无线传 ...
- Android开发之下载Tomcat服务器的文件到模拟器的SD卡
Tomcat服务器可以到Apache的官网去下载http://tomcat.apache.org/,如何配置和使用百度下也有很多介绍,只要把Java的SDK配下java_home环境变量就行了,因为T ...
- 4安德鲁斯.2.2在系统,具有系统权限的应用程序无法读取或写入SD卡
有两个解决方案: 1.通过改动android系统的源代码,开放SD卡的读写权限,具体的改动方法和说明.能够參考网上资料http://www.ifeegoo.com/android-debug-stat ...
- SPI模式下MCU对SD卡的控制及操作命令(转)
源:SPI模式下MCU对SD卡的控制及操作命令 一.前言 SD 卡有两个可选的通讯协议:SD 模式和 SPI模式 SD 模式是SD 卡标准的读写方式,但是在选用SD 模式时,往往需要选择带有SD 卡控 ...
随机推荐
- linux的常用命令及常用快捷键
常用指令 ls 显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all) mkdir ...
- codevs 2800 送外卖(状压dp)
/* f[i][j] 表示走过的点构成i状态 且最后到达的点为j时的最优解 在那最后一个状态就是(1<<n+1)-1 每个点都到达 在由此回到0 */ #include<iostre ...
- javascript 中寻找性能瓶颈
1.如果一个段代码很耗时的话你可以注释掉一部分你认为是很耗时的,或者干脆全部注释掉,然后再一点一点的解开. 2.js优化中最主要的还是对dom操作的优化,单纯的js执行时间是很短的,而js和dom之间 ...
- asp.net中应用JQuery.pagination分页
JQuery.pagination这款分页控件非常好用,可实现无刷新分页,为了方便下次做项目便于拷贝,所以在此发布一下,具体的实现流程如下: 效果图: JQuery.pagination的各个参数的说 ...
- Assembly 'Microsoft.Office.Interop.Excel
编译的时候报错,都无法通过编译: Assembly 'Microsoft.Office.Interop.Excel, Version=14.0.0.0, Culture=neutral, Public ...
- nodejs+express 4.x笔记
4.x与3.x变化比较大,包括安装以及api 一:安装express4.x 1. npm install express -g //express modules2. npm install expr ...
- JavaWeb学习笔记之JSP(二)
1.1. JSP的指令: 1. 什么是JSP 指令? JSP 指令: JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出, 而只是告诉引擎如何处理JSP页面中的 ...
- C++拾遗(七)函数相关(2)
内联函数 内联函数与常规函数的区别在于: 1.常规函数:在执行调用指令时,先存储该指令的内存地址,将函数参数复制到堆栈,然后跳转到被调用函数起点的内存单元,执行函数,将返回值放 入寄存器,最后跳回到一 ...
- phpcms v9二次开发之模型类的应用(2)
二.模型操作方法select()--查询语句 //查询级别管理列表信息 public function levellists() { $lelists = $this->l ...
- [算法导论]贪心算法(greedy algorithm)
转载请注明出处:http://www.cnblogs.com/StartoverX/p/4611544.html 贪心算法在每一步都做出当时看起来最佳的选择.也就是说,它总是做出局部最优的选择,寄希望 ...