直接说结论:
windows对多语言环境中的特殊字符并不完备,总有支持不到的地方,所以,建议禁止路径中出现非常规的六种横杠,仅允许英文横杠(-)(0x2D)。

此网页对编码总结比较到位:
https://blog.csdn.net/Liuqz2009/article/details/107861408

后面是个人的测试笔记

7种横杠:-‐‑‒–—― 第一个是英文ASCII码-(0x2D),其他为unicode 0x2010~0x2015
UTF16BE: FE FF 00 2D 20 10 20 11 20 12 20 13 20 14 20 15  unicode大尾
UTF16LE: FF FE 2D 00 10 20 11 20 12 20 13 20 14 20 15 20  unicode小尾
UTF8:             2D E2 80 90 E2 80 91 E2 80 92 E2 80 93 E2 80 94 E2 80 95 (3字节连续对应)
UTF8BOM: EF BB BF 2D E2 80 90 E2 80 91 E2 80 92 E2 80 93 E2 80 94 E2 80 95 (3字节连续对应)
ANSI:             2D A9 5C 3F 3F A8 43 A1 AA A8 44; -‐??–—― 第3(?0x2011)、4(?0x2012)个横杠在当前CP936简体中文系统无对应。3F为?号。windows10简体中文系统创建txt默认是UTF8文件,对7种-进行mkdir(bat脚本),只有一种执行成功。
如果在cmd中挨个执行,成功5次
mkdir -   成功:0x2D
mkdir ‐
mkdir ?
mkdir ?
mkdir –  失败:子目录或文件 - 已经存在。 0x2013 (mkdir时失败,但鼠标右键可以创建)识别为了0x2D目录
mkdir —  失败:子目录或文件 - 已经存在。 0x2014 (mkdir时失败,但鼠标右键可以创建)识别为了0x2D目录
mkdir ―
cmd中显示都正常,unicode或utf8显示。
tree > 1.txt 导出的是ANSI文件,两个无法正常显示(说明资源浏览器不是ANSI)
├─-   0x2D
├─‐  0x2010
├─?   0x2011 显示失败,但可以拷贝到UTF16BE文件中
├─?   0x2012 显示失败,但可以拷贝到UTF16BE文件中
└─―  0x2015
最终正常的只有0x2D、0x2010、0x2015
中文输入法(sogo)中文横杠对应的是0x2014 (mkdir时失败,但鼠标右键可以创建)
├─-   0x2D
├─‐  0x2010
├─?   0x2011 显示失败,但可以拷贝到UTF16BE文件中
├─?   0x2012 显示失败,但可以拷贝到UTF16BE文件中
├─–  0x2013
├─—  0x2014
└─―  0x2015
以下拷贝命令全部执行成功,但实际有两个目录为空,说明重复拷贝了两次,与mkdir失败一致(0x2013、0x2014)
copy /Y 1utf8bom.txt -   0x2D
copy /Y 1utf8bom.txt ‐
copy /Y 1utf8bom.txt ?
copy /Y 1utf8bom.txt ?
copy /Y 1utf8bom.txt –  重复拷贝到了0x2D目录
copy /Y 1utf8bom.txt —  重复拷贝到了0x2D目录,中文输入法(sogo)中文横杠对应的是0x2014
copy /Y 1utf8bom.txt ―  0x2015结论:
1、QT5.5.1 QFile copy对中文横杠失败的根源在于windows10简体中文系统不支持目录含有0x2013、0x2014的目录拷贝。
2、ANSI对于显示0x2011、0x2012也不正常,所以至少要剔除0x2011~0x2014共4种横杠。
3、对于0x2010、0x2015,不清楚怎么通过输入法敲出来,也没有意义。(中文环境输出0x2D、0x2014)
4、最终建议禁止目录或文件路径中出现0x2010~0x2015六种横杠。
5、横杠只允许出现英文0x2D(-)。禁止其他所有横杠。

相关检查代码

bool CheckPath(const std::string &str_path)
{//假定输入为windows local编码CP936 GBK版本if (str_path.length() == 0){return false;}//即使部分windows函数能访问部分目录,但不是所有功能都正常,所以access判断没必要。//if (access(str_path.c_str(), 0) == 0)//{//   return true;//存在的都正常,可能是文件,也可能是目录//}
#pragma warning(push)
#pragma warning(disable:4566) //本句没有必要了,暂时保留。
#pragma execution_character_set("utf-8") //没有此句,strUtf8会被编译为ANSIconst static std::string strUtf8 = "‐,?,?,–,—,―"; //warning C4566: 由通用字符名称“\u2011”表示的字符不能在当前代码页(936)中表示出来
#pragma warning(pop)//const static std::string strUtf8 = "‐,–,—,―"; //删除编译告警的两种横杠(0x2011)、(0x2012)//const static std::string strGB2312 = ToLocal(strUtf8);const static string_vec strUtf8_vec = split(strUtf8, ",");const std::string str_path_utf8 = ToUtf8(str_path);//ANSI 0xA1AA ==> UTF8 0xE28095 (UTF16BE 0x2015)这里说明iconv转换也不一定标准。for each (const std::string &strUtf8_temp in strUtf8_vec){//const char *pCharTemp = strGB2312_temp.c_str();//测试,此处为ANSI编码A95C、A843、A1AA、A844。//const char *pCharTemp = strUtf8_temp.c_str();//测试,此处为utf8编码0xE28090 ~ 0xE28095if (str_path_utf8.find(strUtf8_temp) != std::string::npos){              return false;}}return true;
}

以上有乱码是由于拷贝过程导致的,实际可以在unicode BE txt中编辑二进制数据获得7种横杠。
-‐‑‒–—―

关于window简体中文环境文件路径包含7种横杠的问题,及结论推广相关推荐

  1. java 获取包路径_java获取java文件路径的四种方法

    java获取java文件路径的四种方法 发布时间:2020-04-17 11:03:45 来源:亿速云 阅读:750 作者:小新 今天小编给大家分享的是java获取java文件路径的四种方法,很多人都 ...

  2. R语言表示文件路径应该如何使用斜杠符号?

    R语言表示文件路径应该如何使用斜杠符号? 目录 R语言表示文件路径应该如何使用斜杠符号? R语言是解决什么问题的? R语言表示文件路径应该如何使用斜杠符号? R语言是解决什么问题的? R 是一个有着统 ...

  3. 在anaconda中git找不到命令,可能是设置的git环境变量路径包含中文

    问题报错 在Anaconda Navigator中打开的虚拟环境cmd,输入git --version,但是显示,git既不是外部命令,也不是内部命令. 但是在自己的win cmd中是可以识别出来的. ...

  4. 如何读取resources目录下的文件路径(九种方式)

    前情提要 本文中提供了九种方式获取resources目录下文件的方式.其中打印文件的方法如下: /*** 根据文件路径读取文件内容** @param fileInPath* @throws IOExc ...

  5. java中获取文件路径的几种方式

    http://my.oschina.net/jing31/blog/6605 关于绝对路径和相对路径:  绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:C:xyz e ...

  6. 文件路径最好使用正斜杠,使用反斜杠可能在unix系统中访问不到文件

    <%@ page language="java" contentType="text/html; charset=GBK"pageEncoding=&qu ...

  7. Java读取resource文件/路径的几种方式

    方式一: String fileName = this.getClass().getClassLoader().getResource("文件名").getPath();//获取文 ...

  8. java 运行os文件路径_Java获取文件路径的几种方式

    关于绝对路径和相对路径: 绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:C:xyz est.txt 代表了test.txt文件的绝对路径. http://www.su ...

  9. 文件路径最好使用正斜杠。使用反斜杠可能在unix系统中访问不到文件。

    /**** 下载模板*/public void downTemp() {String title="data";String savePath = PathUtil.getProj ...

  10. MAC怎么获取文件路径 MAC获取文件路径的四种方法

    MAC怎么获取文件路径介绍 方法一:最简单的方法  右键文件或者文件夹,选择显示简介 2在弹出来的窗口中找到位置,即为路径,在mac 10.10之前的系统是正常的路径,10.10开始是小箭头代替/显示 ...

最新文章

  1. Quartz的Scheduler初始化源码分析
  2. Segment Routing — SRv6 — 转发原理
  3. 一系列用于Fuzzing学习的资源汇总
  4. python使用教程cmd啥意思-对python中执行DOS命令的3种方法总结
  5. 关于zendframework中的Zend_Db_Expr(不自动加引号)
  6. python输出变量代码_Python中变量的输入输出实例代码详解
  7. .NET获取不到js写的cookie解决方法
  8. Large-Scale Named Entity Disambiguation Based on Wikipedia Data
  9. rmi远程代码执行漏洞_【最新漏洞简讯】WebLogic远程代码执行漏洞 (CVE202014645)
  10. pythonlauncher是干什么用的_python的launcher用法知识点总结
  11. ie8无法打开oracle em,IE8无法进入debug模式而引发的Oracle数据库问题-Oracle
  12. 浅谈被动式IAST产品与技术实现
  13. 会员260万,续卡率居高不下,山姆有着怎样的魔力?
  14. 纯前端集成视频会议和聊天室
  15. Photoshop调出美女人体金黄色肌肤
  16. html5 图片上传进度条,html5异步上传图片显示上传文件进度条
  17. 软件测试员一定需要懂编程代码吗?
  18. 前端工程中常用的文件夹命名(扫盲帖)
  19. cookie中__jsl_clearance参数的破解。
  20. 计算机附件计算器的用法,计算机附件中的计算器使用方法.doc

热门文章

  1. 第二天性-人类进化的经济起源
  2. Unity Shader - Shader Compilation Target Levels 着色器编译目标级别
  3. gitbook 入门教程之还在搞公众号互推涨粉?gitbook 集成导流工具,轻轻松松躺增粉丝!...
  4. FineReport学习-练习05-超级链接
  5. C#创建临时文件夹方法
  6. 打印时去除页眉和页脚
  7. 西游记中孙悟空大闹天宫时期被孙悟空打败的
  8. 2021年登高架设模拟考试题及登高架设复审模拟考试
  9. Python深度学习-第一章、什么是深度学习
  10. jsb is not in the sudoers file. This incident will be reported.