使用pyperclip获取剪贴板的中文为什么会是乱码呢?

uswood 2018-01-15 10:03:52
#! python3
# 在游览器中打开一个地图网页,地址从命令行或剪贴板得到
import webbrowser, sys, pyperclip


if len(sys.argv) > 1:
#从命令行得到地址
address = ' '.join(sys.argv[1:])
else:
#从剪贴板获取地址
address = pyperclip.paste()

webbrowser.open('https://ditu.amap.com/search?query=' + address)


使用这个模块获取剪贴板的内容,如果是中文就会使乱码,如果是英文就没有事情,搜索很久没有头绪,似乎是编码的问题,但是不知道怎么转换,请教大神!
...全文
1171 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
uswood 2018-01-16
  • 打赏
  • 举报
回复
引用 7 楼 seakingx 的回复:
我想可能是这个原因, 在mac 系统下还需要2个东东 http://coffeeghost.net/2010/10/09/pyperclip-a-cross-platform-clipboard-module-for-python/ Windows – No requirements. You don’t need the win32 module installed. Mac – Requires the pbcopy and pbpaste, which come with OS X.
还是不行呢,我试了一下发现这个是系统自带的命令,哎真奇怪 ,感谢这么热心的找了资料。。
陈年椰子 2018-01-16
  • 打赏
  • 举报
回复
我想可能是这个原因, 在mac 系统下还需要2个东东 http://coffeeghost.net/2010/10/09/pyperclip-a-cross-platform-clipboard-module-for-python/ Windows – No requirements. You don’t need the win32 module installed. Mac – Requires the pbcopy and pbpaste, which come with OS X.
uswood 2018-01-15
  • 打赏
  • 举报
回复
引用 1 楼 seakingx 的回复:
在首行 加上
# coding=utf-8
我是 python 2.7 64bit ,浏览器是 chrome 没发现乱码
我试过了,但是在coderunner中没有反应,仍然是原来的样子,然后我尝试在IDLE中运行,会出现这个traceback
Traceback (most recent call last):
  File "/Users/uswood/Desktop/python/mapIt.py", line 12, in <module>
    address = pyperclip.paste()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pyperclip/__init__.py", line 596, in lazy_load_stub_paste
    return paste()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pyperclip/__init__.py", line 109, in paste_osx_pbcopy
    return stdout.decode(ENCODING)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd4 in position 28: invalid continuation byte
陈年椰子 2018-01-15
  • 打赏
  • 举报
回复
在首行 加上
# coding=utf-8
我是 python 2.7 64bit ,浏览器是 chrome 没发现乱码
uswood 2018-01-15
  • 打赏
  • 举报
回复
引用 3 楼 seakingx 的回复:
# coding=utf-8

import webbrowser, sys, pyperclip

if len(sys.argv) > 1:
    # 从命令行得到地址
    address = ' '.join(sys.argv[1:])
else:
    # 从剪贴板获取地址
    address = pyperclip.paste()
# print address
webbrowser.open('https://ditu.amap.com/search?query=' + address)
那就奇怪了, 我这边这段代码, 不论是命令行参数, 还是剪贴板, 中文都没问题。 试试
# coding=utf-8
test_str1 = "中文"
test_str2 = u"中文"
print(test_str1)
print(test_str2)
输出正常吗?
我将代码放到win系统中发现正常,原来是mac系统的原因,但问题出在哪怎么解决还是不清楚。。
uswood 2018-01-15
  • 打赏
  • 举报
回复
引用 3 楼 seakingx 的回复:
# coding=utf-8

import webbrowser, sys, pyperclip

if len(sys.argv) > 1:
    # 从命令行得到地址
    address = ' '.join(sys.argv[1:])
else:
    # 从剪贴板获取地址
    address = pyperclip.paste()
# print address
webbrowser.open('https://ditu.amap.com/search?query=' + address)
那就奇怪了, 我这边这段代码, 不论是命令行参数, 还是剪贴板, 中文都没问题。 试试
# coding=utf-8
test_str1 = "中文"
test_str2 = u"中文"
print(test_str1)
print(test_str2)
输出正常吗?
正常,输出两个 ‘中文 ’ ,竟然电脑不同问题就不存在了 奇怪。。
陈年椰子 2018-01-15
  • 打赏
  • 举报
回复
# coding=utf-8

import webbrowser, sys, pyperclip

if len(sys.argv) > 1:
    # 从命令行得到地址
    address = ' '.join(sys.argv[1:])
else:
    # 从剪贴板获取地址
    address = pyperclip.paste()
# print address
webbrowser.open('https://ditu.amap.com/search?query=' + address)
那就奇怪了, 我这边这段代码, 不论是命令行参数, 还是剪贴板, 中文都没问题。 试试
# coding=utf-8
test_str1 = "中文"
test_str2 = u"中文"
print(test_str1)
print(test_str2)
输出正常吗?

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧