- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个应用程序可以扫描文件夹路径并将它们呈现给用户。我一直在使用一个简单的实用程序将 UTF-8 转换为宽字符串。它运作良好。但今天它开始抛出异常,我需要弄清楚该怎么做。
这是函数。
inline std::wstring convertutf8(const std::string& p)
{
std::wstring_convert<std::codecvt_utf8<wchar_t>> wconv;
return wconv.from_bytes(p.c_str());
}
今天,该实用程序第一次尝试转换此字符串,但出现异常
I:\Scans\Nouvelles numérisations
这是在我运行某个其他应用程序的法语版本并将某些内容保存到我的应用程序扫描的文件夹时创建的文件夹路径。 (我在以美国英语为语言环境的系统上运行)。
此路径导致标准 C++ 库从 from_bytes 函数内部抛出 range_error 异常(文本为“错误转换”),标准库似乎无法转换带有重音符号的字符...
é
我可以看到几种处理这种情况的方法,包括捕获异常(并返回“”)或者在这种情况下可能返回默认错误字符串。 (wstring_convert 在构造函数中有一个工具)。但我需要更好地理解这一点。
我愚蠢地希望将 wstring_convert 与 codecvt_utf8 一起使用可以让我处理这种情况。到目前为止,我的应用程序似乎已经从容地处理了中文路径。所以我很惊讶这个给我带来麻烦
当我在调试器(及其周围的那些)中查看问题字符的文本时,我看到以下内容
CHAR DEC HEX
---- --- ----
'n' 110 0x6e
'u' 117 0x75
'm' 109 0x6d
'é' -23 0xe9
'r' 114 0x72
'i' 105 0x69
这些数字是否代表“正确的”UTF-8 表示法?我什至不知道。国际化对我来说不是强项。
我是不是做错了什么?缺少简单的东西?这是扫描文件夹并将其呈现给用户以供导航的应用程序的一部分。我希望能够处理具有此类字符的路径,正确转换它们并继续。
有人可以指导我在这种情况下应该做什么,以便能够在基于英语的系统上处理这样的路径吗?
最佳答案
std::wstring_convert
通过抛出异常来做正确的事情。
0xe9
不是字符 é
的有效 UTF-8 字节序列。只有0-127(基本ASCII)范围内的代码点不需要特殊编码。
字符 é
的有效 UTF-8 字节序列如下所示 (try for yourself):
0xC3, 0xA9
what I should do in this case to be able to handle such a path on an English-based system?
这种情况是输入错误,应该这样处理。例如,向用户报告错误,以便他们修复输入。
关于c++ - 在基于英语的系统上将 UTF-8 路径转换为宽字符会引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52647434/
函数参数中或显示尺寸时(高度,宽度)的顺序是否有约定? 最佳答案 我不知道大量的语言,但我使用过的语言(宽度,高度)。它更适合沿着 (x, y) 坐标线。 关于language-agnostic -
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 6 年前。 Improve th
有没有办法显示自定义宽度/高度的YouTube视频? 最佳答案 在YouTube网站上的this link中: You can resize the player by editing the obj
如何从此表单获取数据(数据的长表示): import pandas as pd df = pd.DataFrame({ 'c0': ['A','A','B'], 'c1': ['b',
我在让宽度为 900px 的页面在宽度低于 900px 的分辨率下看起来不错时遇到了一些麻烦。这包括智能手机等移动设备。看起来我在页面上放大了,但无法滚动或缩小。我的页面包装器被定义为以屏幕为中心。这
我有一个包含一个表的 div,它有另一个带有动态变化文本的 div。div 有样式 overflow: hidden; white-space: nowrap; text-overflow: elli
我一直在愚弄下面的html代码。我已将 div id ="mainWide"设置为 2500 像素的宽度,这比我的屏幕还宽,我希望在主浏览器窗口中有一个水平滚动条,而不是在 div block 本身中
当我的屏幕浏览器窗口在 992px-1199px 之间时,我的文章元素比它们的父 div (.wrapper) 更宽。所以在这个屏幕宽度下,面板重叠并且看起来不对。 在所有其他屏幕宽度下,我的代码都准
我在对齐某些行时遇到了一些问题。我正在显示一个占据视口(viewport) 100% 高度的部分。因此,当您在屏幕上查看此部分时,您只会看到此部分。 在这个部分中,我有一个标题和副标题。标题应显示在节
为什么表单输入字段比其父 div 宽?宽度应用于文本 div,但不应用于其中包含表单字段的 div。为什么会这样? See the livecode here. .parent { width:
我想让这个标题 100% 宽。我在 jsfiddle 上试过这个,但是左边和右边还有一些余量。 CSS: #header { background: url("../img/top-bg.png
我的页面宽度有问题。无论我尝试什么,它的左边或右边都有白边(默认情况下在右边,如果我使用 margin-right:0 则在左边)。如果我使用 margin:0 比它留在右边。尝试了我所知道的一切,但
我有一个带有背景图片的宽 div。 div 的宽度为 1100 像素,当浏览器窗口小于该宽度时,会出现滚动条。有什么办法可以避免滚动条吗?那不是任何黑客。现在我知道我可以把它放在 body image
我有一个您可以访问的应用程序 here .当您打开应用程序时,只需单击加号按钮,您就会看到一个带有搜索栏的模态窗口。 现在请执行这两个搜索: 搜索 1:AAA 搜索 2:AAE 您会看到,在 AAE
这个问题在这里已经有了答案: Does element width include padding? (5 个答案) 关闭 7 年前。 HTML CSS .wrap{widt
我正在尝试在工具栏中创建一个自定义显示,类似于 Xcode 工具栏中心的信息 Pane 。 我们如何创建一个宽度超过 32 点的 NSToolbarItem? 框架始终将其限制为 32 点,即使最小和
我想将df1转换成df2 旧示例数据框 df1 df1 长),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/359
我正在使用 JavaScript 代码在 FireBase/FireStore 中上传图像。 核心功能已经可以运行,我可以上传,但我还需要在上传之前检查图像的大小。这就是我很乐意获得帮助的地方。 以下
如何在 Tkinter 中设置/更改 ttk.Separator 对象的长度/宽度? ttk.Separator(self, orient='horizontal').grid(c
我有一个简单的问题。为什么 a 不会自动调整其内容的大小?像这样: Test 返回 width:100%,尽管我希望“Test”这个词简单地居中。有什么想法吗? 最佳答案 您的问题与 HT
我是一名优秀的程序员,十分优秀!