c++ - 我可以从 wxWidget wxTextCtrl 中读取 åäö 吗?
问题描述
在 C++ 中。我有一个 wxTexfield,希望用户输入一个单词的瑞典语翻译。
在用户输入 å、ä 或 ö (utf8) 之前,一切正常。将 wxString 转换为 utf8 不是问题 - 问题是我什至无法将文本从字段中取出。对于我使用的其余文本(其中 ans 是文本字段的指针)。任何想法?对于我刚刚使用的其他字符串,它可以正常工作。
std::string ch = std::string((ans->GetValue()));
解决方案
std::string
您不能在不指定编码的情况下将任意 Unicode 字符串转换为。默认情况下,编码是当前语言环境的编码,尤其是在 Windows 下,不一定是 UTF-8,这正是您几乎肯定想要使用的,因为在此编码中不可表示的字符将在转换过程中丢失。
因此,正确的做法是显式使用ans->GetValue().ToUTF8()
,然后您std::string
将包含字符的 UTF-8 编码表示。当然,您需要意识到字符串的长度不会为 1,即使对于单个字符也是如此,因此您可能需要std::wstring
改用它。
PS 在 wxWidgets 3.1.5+ 中你也可以utf8_string()
直接返回std::string
,所以如果你有足够新的版本,你也可以使用这个。
推荐阅读
- r - 填充 3D 数组的有效方法
- hadoop - 在不更改现有 HIVE 架构的情况下从 HIVE 访问 ENUM 到 IMPALA
- windows - 在 Windows 机器上访问 Ras Pi 3 phpmyadmin
- c - 结构数据的 C 内存分配顺序
- java - Java绘图(初级)
- node.js - 从多页应用程序进行身份验证后,如何在初始下载期间将 JWT 令牌加载到 React?
- javascript - Monoidal List的功能链如何存储数据?
- rust - 处理可能是驱动器号或连接到其他东西的路径的路径的正确方法是什么?
- amazon-web-services - 使用 AWS S3 共享文件夹
- regex - 有问题识别数字模式