首页 > 解决方案 > 从右到左隔离字符串。C++

问题描述

有人有 Unicode 方面的经验吗?

我正面临波斯语 unicode 的棘手问题。
我有std::wstring s = (L"\u0634\u0646\u0628\u0647");一个波斯语单词。当我调试它时,我看到底层的词正是我想要的,但是反过来了。所以我研究并发现 u2067 是从右到左读取字符串的。
笔记:

我无法手动反转字符串,因为波斯语字符正在改变它们的形状,无论它们在字符串中的位置如何。

所以我在开头添加了 2067 int 并得到了
std::wstring s = (L"\u2067\u0634\u0646\u0628\u0647");.
但是现在底层的字符串是一样的,只是在字符串的开头添加了一个正方形而不是反转。
有没有人有这东西的经验?请提出解决方案。谢谢!

标签: c++unicodefarsi

解决方案


基础字符串将是相同的。你没有改变字节的顺序,这是写在代码中的。但是理解 Unicode 的渲染器应该获取这些字节并从右到左显示字符。那是视觉上的事情。它与编码无关。从您的问题来看,尚不完全清楚您还期望什么。可能是你在调试器中查看字符串,而调试器不支持Unicode的这个特性。如果您尝试将字符串输出到适当的控制台,您应该会按预期看到它。


推荐阅读