[python]input函数中文输出删除导致编码问题
<h2 id="问题描述">问题描述</h2><p>使用<code>input()</code>接收用户的命令行输入时,当用户输入中文,并用退格键删除中文时,删一个中文字需要按两下退格键,并且还会出现utf8编码问题。</p>
<h2 id="解决">解决</h2>
<p>导入<code>readline</code>包即可,不需要引用。Linux/mac的python标准包就有</p>
<pre><code class="language-python">import readline
</code></pre>
<h2 id="readline包的作用">readline包的作用</h2>
<p>readline是一个用于增强交互式命令行体验的库,提供以下功能:</p>
<h3 id="1行编辑功能">1. <strong>行编辑功能</strong></h3>
<ul>
<li>支持使用方向键移动光标</li>
<li>支持退格键删除字符</li>
<li>支持Delete键删除光标后的字符</li>
<li>支持Home/End键快速移动到行首/行尾</li>
</ul>
<h3 id="2历史记录管理">2. <strong>历史记录管理</strong></h3>
<ul>
<li>自动保存输入历史</li>
<li>使用上下方向键浏览历史命令</li>
<li>支持搜索历史记录(Ctrl+R)</li>
</ul>
<h3 id="3utf-8和多字节字符支持">3. <strong>UTF-8和多字节字符支持</strong></h3>
<ul>
<li>正确处理中文等多字节字符</li>
<li>避免在删除中文字符时出现UTF-8编码错误</li>
<li>确保光标位置正确计算</li>
</ul>
<h3 id="4tab补全">4. <strong>Tab补全</strong></h3>
<ul>
<li>支持自定义tab补全功能</li>
<li>可以实现文件名、命令名等的自动补全</li>
</ul>
<h3 id="5键盘快捷键">5. <strong>键盘快捷键</strong></h3>
<ul>
<li>Ctrl+A:移动到行首</li>
<li>Ctrl+E:移动到行尾</li>
<li>Ctrl+K:删除光标到行尾的内容</li>
<li>Ctrl+U:删除光标到行首的内容</li>
<li>Ctrl+W:删除前一个单词</li>
</ul>
</div>
<div id="MySignature" role="contentinfo">
<p>本文来自博客园,作者:花酒锄作田,转载请注明原文链接:https://www.cnblogs.com/XY-Heruo/p/19070456</p><br><br>
来源:https://www.cnblogs.com/XY-Heruo/p/19070456
頁:
[1]