[Seek Help] 关于终端输入汉字的问题 Resolved
Tofloor
poster avatar
乾豫恒益
deepin
2024-01-13 09:28
Author
请教各位大神:
用终端输入一行汉字,过程中发现输入错误一个汉字,删除时,发现只删除了半个汉字。删除两个汉字时,发现保留了一个汉字。
请问如何设置终端,可以将汉字整个删除?
汉字的标点符号也是这样。
先谢谢各位大神了。
Reply Favorite View the author
All Replies
fslong
deepin beta test group
2024-01-13 09:53
#1

换字体试试

Reply View the author
花雨落逝
deepin
2024-01-13 10:00
#2

建议附上图

Reply View the author
jjcui8595
deepin
2024-01-13 10:17
#3

20.9默认终端没发现这个问题

Reply View the author
liwl
deepin
2024-01-13 11:13
#4
估计是字体的问题
Reply View the author
lizipeng0013
deepin
2024-01-13 14:18
#5

删除汉字只删除一半是显示问题,实际输入的内容已删除,并且问题只会出现在终端运行的程序有文字输入的时候,如果终端未运行程序,只是在终端输入汉字,这时删除汉字是正常的。

我也同求解决办法

Reply View the author
deepin
2024-01-13 14:58
#6

一个汉字的utf8编码是3个字节;应该是两个字符吧,所以你一次删除一个字符,就是中文的一半啊,你说实际上删除了一个中文字符,但你的程序中实际上也是删除了一个字节的字符,即半个中文字符,所以一次删半个中文字符,恰好就是你程序的处理方式,这样反而会让你的程序以正确的方式运行;如果你想达到一次删除一个中文字符,你的程序也需要改。

Reply View the author
deepin
2024-01-13 15:01
#7

终端要换字体。

Reply View the author
乾豫恒益
deepin
2024-01-14 21:01
#8
 
 
终端输入命令行时,没这个问题,我的表述有问题。
我的问题是用C++开发的程序,用控制台时,出现删除了半个汉字的状态。
========================================
以下是百度AI给出的方法:过两天我来试试。
========================================
linux c++ cin删除了半个汉字

在Linux C++中使用cin输入时,如果遇到删除了半个汉字的情况,可能是由于控制台不支持Unicode编码导致的。这种情况下,我们需要手动处理输入流来正确地获取完整的汉字。

以下是一段示例代码,展示了如何通过自定义函数getChinese()从标准输入中获取完整的汉字:

include
using namespace std;
string getChinese() {
string chinese = ""; // 存放完整的汉字
char input[10]; // 临时存放每次输入的字符
while (true) {
cout << "请输入汉字(按Enter结束):";
fgets(input, sizeof(input), stdin); // 接收输入并保存到input变量中
if (strlen(input) == 2 && isprint(input[0]) && isprint(input[1])) {
break; // 当输入长度为2且都是可打印字符时,表明已经输入了完整的汉字
} else {
continue; // 否则重新提示输入
}
}
return chinese + input; // 返回完整的汉字
}
int main() {
string chineseInput = getChinese();
cout << "您输入的汉字是:" << chineseInput << endl;
return 0;
}
运行上述程序后,会提示用户输入汉字,直到输入两个连续的可打印字符才认为输入完成。然后将输入的汉字进行显

 

Reply View the author
Merlin
Super Moderator
Product Manager
2024-01-15 09:58
#9

这个问题应该算是一个个bug,我这边已经提交非研发和测试,跟进处理。

Reply View the author
乾豫恒益
deepin
2024-01-15 17:11
#10
Merlin

这个问题应该算是一个个bug,我这边已经提交非研发和测试,跟进处理。

谢谢了,期望能够解决!
Reply View the author