我的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 卡控 ...
随机推荐
- JspSmart文件上传与下载
JspSmart 文件上传包,放在WEB-INF/lib下 uploadForm.jsp <%@ page language="java" import="java ...
- HTML学习(1)
1.缩写和首字母缩写<abbr><acronym> <abbr title="etcetera">etc.</abbr> <a ...
- Android Http请求失败解决方法
1.MainActivity.java 文件中的onCreate方法改成如下: @SuppressLint("NewApi") @Override protected void o ...
- Windows系统创建硬链接文件
源文件夹:E:\深海 创建新硬链接文件夹:D:\微云同步盘\719179409\4-工作资料\深海 打开命令提示符(管理员) 敲入以下命令: 创建成功后,进入目录 D:\微云同步盘\71917 ...
- 武汉科技大学ACM:1006: 我是老大
Problem Description 今年是2021年,正值武汉科技大学 ACM俱乐部成立10周年.十周年庆祝那天,从ACM俱乐部走出去的各路牛人欢聚一堂,其乐融融.庆祝晚会上,大家纷纷向俱乐部伸出 ...
- 你好,C++(17)0.1*10不等于1.0——4.1.4 关系操作符4.1.5 逻辑操作符
4.1.4 关系操作符 在C++中,除了需要用算术操作符对数据进行加减乘除的算术操作之外,我们有时候还需要对数据之间的关系进行操作,也就是对两个数据进行大小比较,得出它们之间的大小关系.在现实世界中 ...
- Gradle一分钟实现Spring-MVC
前提: 1,已安装JDK 2, 有Intellij IDEA 3, 已安装Gradle 一分钟实现步骤: 1,mkdir Spring-MVC;cd Spring-MVC2,gradle init3, ...
- CSS样式鼠标点击与经过的效果一样
a:link /* 未访问的链接 */ a:visited /* 已访问的链接 */ a:hover /* 当有鼠标悬停在链接上 */ a:active /* 被选择的链接 */ a,a:visite ...
- 如何使用service命令来管理nginx
如何使用service命令来管理nginx??? 如: service nginx start service nginx restart service nginx stop service ngi ...
- PreparedStatement可以有效地防止sql被注入
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import jav ...