Qt、Vc下用fopen打开中文名字的文件

在做一个Qt项目的时候,完成上传文件时,通过fopen打开文件用来读时发现fopen不能打开中文的文件名,自己在网查找一下,解决方法如下

参考:http://weidaohang.org/wangluo/h/index.php?q=aHR0cDovL3d3dy5qYjUxLm5ldC9hcnRpY2xlLzUxOTY2Lmh0bQ%3D%3D

代码如下:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

boolUTF8ToUnicode(constchar*
UTF8,
wchar_t*
strUnicode)

{

 DWORDdwUnicodeLen;   
//转换后Unicode的长度

 TCHAR*pwText;     
//保存Unicode的指针

//
wchar_t* strUnicode;    //返回值

 //获得转换后的长度,并分配内存

 dwUnicodeLen
= MultiByteToWideChar(CP_UTF8,0,UTF8,-1,NULL,0);

 pwText
=
newTCHAR[dwUnicodeLen];

 if(!pwText)

 {

 returnfalse;

 }

 //转为Unicode

 MultiByteToWideChar(CP_UTF8,0,UTF8,-1,pwText,dwUnicodeLen);

 //转为CString

 wcscpy(strUnicode,
pwText);

 //清除内存

 delete[]pwText;

 returntrue;

}

这个函数的用法如下:

?


1

2

3

4

wchar_tstrUnicode[260];

UTF8ToUnicode(streamName,
strUnicode);

FILE*
fid = _wfopen(strUnicode, L
"rb");

//
FILE* fid = fopen(streamName, "rb");//此为原来的方法,遇到中文不能正确打开

适用于Qt中和Vc中

时间: 2024-09-30 06:14:48

Qt、Vc下用fopen打开中文名字的文件的相关文章

如何把一个目录下的中文名字的文件全部变成拼音命名的文件?

#!/usr/bin/python #-*-coding:utf-8-*- #指定编码格式,python默认unicode编码 from pypinyin import lazy_pinyin,Style import json,os,sys,shutil source_folder =r"G:\workspace\python\selenium\guji\gujisourse" def action(): file_list=os.listdir(source_folder) for

[python IO学习篇]补充打开中文路径的文件

http://blog.csdn.net/mottolinux/article/details/525600621 关于Python编码的基本常识 在python里面 "明文"是unicode类型和str , "密文"是其他的编码格式 如gbk utf-8 latin-1等等 编码: "明文"->"密文" .encode([目标编码格式]) 对象必须为unicode类型 解码: "密文"->&q

Linux下在终端打开图形界面的文件夹

纯粹是一个小技巧-平时我们在Linux下工作一般不需要打开图形界面下的文件夹,但是有的时候是需要的. 但是,用惯键盘的我们怎么可能忍受如此多次数的鼠标点击呢,我们用这两个命令来解决: gnome-open yourdir nautilus yourdir

解析 Qt 字库移植并能显示中文 (下篇)

原文http://mobile.51cto.com/symbian-272563.htm 本文介绍的是Qt 字库移植并能显示中文,需要的字体库文件,一般是多个.具体移植那一个,看你使用的字库是什么了,先来看内容. AD: 解析 Qt 字库移植并能显示中文 (下篇)是本节介绍的内容,接着上篇 解析 Qt 字库移植并能显示中文 (上篇)继续介绍,烂来看本节内容. 1.几种格式字库的简介 QT支持四种格式的字库(TTF,BDF,PFA/PFB,QPF)(见参考文献[3]),但在产品中,如果直接使用,T

MacTex下应用XeLatex实现中文支持

1.tex.latex.xetex.xelatex的关系 Tex是由计算机科学家 D.E.Knuth 设计并实现的排版系统.而LaTeX 就是一个“TeX 宏包”,它扩展了 TeX 的功能,使我们很方便的逻辑的进行创作而不是专心于字体,缩进这些烦人的东西.也就是说,每一个LaTeX 命令实际上最后都会被转换解释成几个甚至上百个TeX 命令.TeX 还有其它的大型宏包,它们和 LaTeX 一起都被叫做 "format(格式)",现在还有一种常用的format叫做 ConTeXt, 用它能

VC++下封装ADO类以及使用方法

操作系统:windows 7软件环境:visual studio 2008 .Microsoft SQL 2005本次目的:介绍一个已经封装的ADO类,简单说明怎么导入使用 首先声明一下,这个封装的ADO类是在[vc知识库 ]下载的,因为最近在数据库课程设计,所以对vc++下使用ADO连接数据库不是很了解,故若是本文有错误的地方的,请不吝指出.具体的ADO类各个封装功能请进入[原文地址 ]查看.在此仅介绍使用此ADO封装类的入门,如连接数据库,显示记录等.一个测试例子如下: 使用步骤:1.先从[

Qt编写可换肤的中文双拼汉字输入法

时间过得真快,不知不觉已到2015年,农历春节一眨眼就过去了,端正状态收拾心情整装待发出发. 曾经有段时间,我有一个很执着的梦想,我要导演出一部空前绝后的巨幕.不过现实无情地碾碎我的梦想,也同时将我推进了人生的低谷. 我开始思考,思想很多很多我以前总是回避的问题,在一次次思考中,我能感觉到我正在向一个陌生的地方走去,前途是光是暗也无法推测,我发现我在赌,赌注是一辈子的懊悔或是郁郁终生. 但当我看到阳光弥漫在我身边时,才发现以前的我是那么幼稚,我始终在找借口或不是借口的借口推卸掉与生俱来的责任,在

win7下zend studio5.5中文乱码解决方法

win7下zend studio5.5中文乱码解决方法 1.打开 C:Documents and SettingsAdministratorZDEconfig_5.5desktop_options.xml(这个地址要根据自己的电脑而定.) 2.查找 editing.encoding 3.修改里面为 <encoding name=”UTF-8″/> 4.保存,并将该文件属性设置为只读,否则zend每次启动都会将 desktop_options.xml 初始化 5.重启 zend 注意,你现在打开

VC++下编译 程序“减肥”

在vc6 和 vs 2008下 编译 以下代码,不更改任何编译设置(vc6  40k , s2008 7k). 一.vc6下,Release 模式 编译处理. 1.去掉不必要的 链接库  工程(Project)-->设置(Settings)-->链接(link)属性页-->对象库/模块(object/library modules) 去掉所有的lib. 选择使用 MSVCRT.LIB kernel32.lib user32.lib. 可以忽略不必要的警告,比如 LINK:warning