我有这个 C# 代码,它应该打开一个文件。
string filePath = @"?C:\Data\123.jpg";
FileStream fs = System.IO.File.OpenRead(filePath);
Run Code Online (Sandbox Code Playgroud)
但是,它在第二行中断并显示错误消息 The filename, directory name, or volume label syntax is incorrect
异常详细信息还显示C:\\dotnet\\solution\\projectname\\?C:\\Data\\123.jpg'. 为什么会进入项目路径?
现在这是一个棘手的问题,但又如此简单。
上面的代码是正确的,它或多或少类似于 Microsoft 文档中的示例。
但是有一个看不见的Unicode字符E280AA
U+202A ? e2 80 aa 从左到右嵌入
就在字母“C”之前。
因此这不起作用:
string filePath = @"?C:\Data\123.jpg";
Run Code Online (Sandbox Code Playgroud)
但这个确实:
string filePath = @"C:\Data\123.jpg";
Run Code Online (Sandbox Code Playgroud)
第一个(只是实际的字符串)作为十六进制代码如下所示:
22 E280AA 433A5C446174615C3132332E6A706722
第二个没有粗体序列。您可以在调试器中或在 Notepad++ 等工具的帮助下看到这一点,您可以在其中使用 Extensions/Converter/ASCII->HEX 来查看十六进制代码。
| 归档时间: |
|
| 查看次数: |
1609 次 |
| 最近记录: |