使用opencv传中文文件崩溃
static char* icvExtractPattern(const char *filename, unsigned *offset)
{
char *name = (char *)filename; if( !filename )
return ; // check whether this is a valid image sequence filename
char *at = strchr(name, '%');
if(at)
{
int dummy;
if(sscanf(at + , "%ud", &dummy) != )
return ;
name = strdup(filename);
}
else // no pattern filename was given - extract the pattern
{
at = name; // ignore directory names
char *slash = strrchr(at, '/');
if (slash) at = slash + ; #ifdef _WIN32
slash = strrchr(at, '\\');
if (slash) at = slash + ;
#endif while (*at && !isdigit(*at)) at++; if(!*at)
return ; sscanf(at, "%u", offset); int size = (int)strlen(filename) + ;
name = (char *)malloc(size);
strncpy(name, filename, at - filename);
name[at - filename] = ; strcat(name, "%0"); int i;
char *extension;
for(i = , extension = at; isdigit(at[i]); i++, extension++)
;
char places[];
sprintf(places, "%dd", i); strcat(name, places);
strcat(name, extension);
} return name;
}
下面是个最小的崩溃场景例子:
#include<ctype.h>
#include<stdio.h> int main(){ char *pPath = "测试视频";
#if defined (_DEBUG)
if(!isdigit(*pPath)){
printf("its not digit\n");
}
#else
if(!iswdigit(*pPath)){
printf("Release its not digit\n");
}
#endif
return ;
}
以下是一个测试:
#include <stdio.h>
#include <Windows.h> int NarrowChar() {
char *pcAlpha = "啊";
printf("pcAlpha = 0x%08X!\n", *pcAlpha); //0xFFFFFFB0
return ;
} int WideChar() {
//wchar_t *pwcAlpha = L"A";
wchar_t *pwcAlpha = L"啊";
printf("pwcAlpha = 0x%08X!\n", *pwcAlpha); //0x0000554A UTF-16-little-endian
//wprintf(L"pwcAlpha = 0x%08X!\n", *pwcAlpha); //0x0000554A
return ;
} int main(void) {
NarrowChar();
WideChar(); return ;
}
由以上可以看出来,字符串这个前缀‘L’实质上是对字符串从ANSI字符集转换为Unicode字符集,也就是UTF-16编码。如果不加这个L前缀就是ANSI/ASCII字符集。
以上的问题我前博文已经研究过了。
################################update#############################
结论:
经过调试测试,其实就是cvCreateFileCapture函数返回失败的原因,在opencv 2.4.9和opencv2.4.10中就有问题,就是都返回失败,而2.4.6就不会
references:
http://www.cppblog.com/luonjtu/archive/2009/03/13/76332.html
http://comments.gmane.org/gmane.comp.lib.opencv.devel/1274
http://msdn.microsoft.com/en-us/library/windows/desktop/ff381407(v=vs.85).aspx
http://blog.csdn.net/xiaobai1593/article/details/7063535
http://stackoverflow.com/questions/8032080/how-to-convert-char-to-wchar-t
使用opencv传中文文件崩溃的更多相关文章
- php上传中文文件文件名乱码问题
php上传文件是最最基础的一个技术点,但是深入进去也有不少问题需要解决,这不,上传中文文件后,文件名变成了乱码. 下面是问题代码,很简单: 1.问题代码 html部分: <html> &l ...
- moodle3.7上传中文文件,无法引用,图片不显示
初始安装moodle3.7 上传图片,名称为中文时,无法引用图片,图片不显示.这里采用修改moodle根目录下的config.php文件, 添加了变量$CFG->slasharguments = ...
- ASP.Net上传中文文件乱码
只要在Head中添加即可解决:<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
- 上传中文文件到linux文件出现乱码问题的解决方案
convm -f gbk -t utf8 -r --notest /ftp的目录 效果:
- ASP无惧上传类不能上传中文双引号文件及ASP函数InStr存在bug
ASP无惧上传类不能上传中文双引号文件及ASP函数InStr存在bug 近日发现eWebEditor V2.8 asp 版本上传文件文件名不能包含中文双引号,发现eWebEditor使用ASP“无惧上 ...
- VFS 上传文件到sftp 报错 包含中文路径 或者中文文件名称
之前用Apache commons-vfs工具进行ftp操作(FTP服务器是 FileZilla Server) 上传本地文件 到 ftp服务器上,如果文件名称 包含 中文 报错 org.apache ...
- wordpress 支持上传中文名称文件
添加文章难免要传个图.文件啥的,可是呢,上传中文名称的文件竟然不行,找了半天,中文乱码,脑残了,竟然忘了这个事,哎 修改其实很简单,只需要两步 1./wp-admin/includes/file.ph ...
- Flask下如何处理Requests 上传中文文件名的问题
一.问题的由来 最近有个项目,叫做文档服务资源中心,类似于七牛,为各个业务系统提供统一的文件资源服务,包括文件的存储.操作管理.下载.预览等.在做文件存储的时候,遇到了这个当指定上传的文件名为 ...
- IE下get传中文乱码的问题完美解决方案
前几天做项目的时候遇到需要在easyui的combobox的url中以get的方式传中文,出现乱码. $('#cc').combobox({ url : 'xxxAction.action?para= ...
随机推荐
- js深入研究之神奇的匿名函数类生成方式
<script type="text/javascript"> var Book = (function() { // 私有静态属性 ; // 私有静态方法 funct ...
- BZOJ2393: Cirno的完美算数教室
2393: Cirno的完美算数教室 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 138 Solved: 83[Submit][Status] D ...
- 2015第24周三Spring事务3
在一个典型的事务处理场景中,有以下几个参与者: Resource Manager(RM) ResourceManager简称RM,它负责存储并管理系统数据资源的状态,比如数据库服务器,JMS消息服务器 ...
- c++命名空间瀑布
一般情况,函数放在命名空间外,命名空间内部放置声明 #include<iostream> using namespace std; //一般情况,函数放在命名空间外,命名空间内部放置声明 ...
- 7 个改变世界的 Java 项目
英文链接:http://radar.oreilly.com/2011/07/7-java-projects.html 文章转载自:开源中国社区 http://www.oschina.net/news/ ...
- unity3d 学习笔记(一)
操作:按下shit 点击坐标轴中心 切换透视图 动画烘焙的概念:相当于把原来的控制器动画或者IK(骨骼)动画所有塌陷为逐帧动画,导出的时候必须选这一项 着色器:从技术的角度来看,着色器是渲染器的一个部 ...
- debian 源
把下面的源覆盖在/etc/apt/sources.list deb http://http.debian.net/debian wheezy main deb-src http://http.debi ...
- Android ActionBar应用实战,高仿微信主界面的设计
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/26365683 经过前面两篇文章的学习,我想大家对ActionBar都已经有一个相对 ...
- 【转】Xcode升到6.4插件失效,与添加插件不小心点击Skip Bundle解决办法
转载自:http://www.jianshu.com/p/d51547d29309 今天升级了xcode到6.4 发现之前装的插件不能使用了.这里有一个解决的方案: 步骤如下: 一.查看Xcode的U ...
- Javascript高级程序设计读书笔记(第六章)
第6章 面向对象的程序设计 6.2 创建对象 创建某个类的实例,必须使用new操作符调用构造函数会经历以下四个步骤: 创建一个新对象: 将构造函数的作用域赋给新对象: 执行构造函数中的代码: 返回新 ...