#1395 UnicodeEncodeError: 'ascii' codec can't encode character '\uff1a' in position 14: ordinal not in range(128)

60.163**5 Posted at: 10 months ago

无效的值或参数:'ascii' codec can't encode character '\uff1a' in position 14: ordinal not in range(128):Traceback (most recent call last):
File "videotrans\translator\_base.py", line 80, in run
File "videotrans\translator\_base.py", line 143, in _run_srt
File "tenacity\__init__.py", line 338, in wrapped_f
File "tenacity\__init__.py", line 477, in call
File "tenacity\__init__.py", line 378, in iter
File "tenacity\__init__.py", line 421, in exc_check
tenacity.RetryError: RetryError[]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "videotrans\util\TestSrtTrans.py", line 19, in run
File "videotrans\translator\__init__.py", line 907, in run
File "videotrans\translator\_base.py", line 83, in run
File "tenacity\__init__.py", line 480, in call
File "videotrans\translator\_localllm.py", line 54, in _item_task
File "openai\_utils\_utils.py", line 286, in wrapper
File "openai\resources\chat\completions\completions.py", line 1156, in create
File "openai\_base_client.py", line 1259, in post
File "openai\_base_client.py", line 968, in request
File "openai\_base_client.py", line 495, in _build_request
File "openai\_base_client.py", line 439, in _build_headers
File "httpx\_models.py", line 156, in init
File "httpx\_models.py", line 82, in _normalize_header_value
UnicodeEncodeError: 'ascii' codec can't encode character '\uff1a' in position 14: ordinal not in range(128)


=
system:Windows-10-10.0.19045-SP0
version:v3.84
frozen:True
language:zh
root_dir:E:/Pyvideotrans

19 Replies

#1 DeepSeek reply at 10 months ago

这个错误是由于在向本地部署的大模型发送请求时,请求头或请求体中包含了中文字符(如中文冒号 :),而系统默认的 ASCII 编码无法处理这些字符导致的。

解决方案:

  1. 检查并修改系统区域设置(推荐):

    • 在 Windows 搜索栏输入“区域设置”并打开。

    • 进入 管理 选项卡。

    • 点击 更改系统区域设置...。

    • 勾选 “Beta 版:使用 Unicode UTF-8 提供全球语言支持 (U)”。

    • 点击 确定 并重启电脑。

  2. 修改软件高级选项(备用方案):

    • 在 pyVideoTrans 的菜单栏选择 工具/选项 -> 高级选项。

    • 在“字幕翻译调整”区域,尝试将 AI翻译每次发送字幕行数 改为 1,以减少单次请求的数据量。

  3. 检查本地模型 API 配置:

    • 请确认您在“翻译设置”中配置的本地模型 API 地址(例如 http://localhost:11434/v1)是正确的,并且本地模型服务正在运行。

如果上述方法无效,请提供完整的日志文件(位于软件根目录下的 videotrans/logs/ 文件夹内)以便进一步分析。

#2 60.163**5 reply at 10 months ago

区域设置里找不到管理

#3 DeepSeek reply at 10 months ago

在 Windows 10 中,您可以通过以下路径找到“更改系统区域设置”的选项:

  1. 在 Windows 搜索栏输入 “控制面板” 并打开它。

  2. 将右上角的“查看方式”更改为 “大图标” 或 “小图标”。

  3. 找到并点击 “区域”。

  4. 在弹出的窗口中,切换到 “管理” 选项卡。

  5. 点击 “更改系统区域设置...” 按钮。

  6. 勾选 “Beta 版:使用 Unicode UTF-8 提供全球语言支持(U)”。

  7. 点击 “确定”,然后根据提示 重启电脑。

重启后,再次尝试使用 pyVideoTrans 的翻译功能。

#4 60.163**5 reply at 10 months ago

更改了区域设置后重启了还是不行

#5 DeepSeek reply at 10 months ago

问题依然存在,这表明错误可能源于软件内部对本地模型API请求的编码处理。

请按以下步骤排查:

  1. 检查本地模型服务:首先确认您本地部署的大模型服务(如Ollama)正在运行且API地址(例如 http://localhost:11434/v1)在浏览器中可正常访问。

  2. 修改高级选项:在pyVideoTrans的菜单栏选择 工具/选项 -> 高级选项。

    • 在“字幕翻译调整”区域,将 AI翻译每次发送字幕行数 设置为 1。

      这可以简化请求数据,减少编码问题的触发几率。

  3. 尝试传统翻译渠道:作为临时测试,请将翻译渠道暂时切换为 Google翻译 或 百度翻译 等传统在线渠道,以确认问题是否特定于您的本地模型配置。

如果以上步骤仍无法解决问题,请提供完整的日志文件以便深入分析。

日志文件位于软件根目录下的 videotrans/logs/ 文件夹内,请提供最新的那个 .log 文件。

#6 60.163**5 reply at 10 months ago

2025-11-10 19:09:36,293 - INFO - Finished call to 'videotrans.translator._localllm.LocalLLM._item_task' after 10.047(s), this was the 3rd time calling it.
self.proxy_str=None
2025-11-10 19:10:37,287 - INFO - 最终配置信息:self.cfg=TaskCfg(cache_folder='E:/Pyvideotrans/tmp9208/a8effc5040', target_dir='K:/_video_out/_video_out/25.6.23.Monkeys with Tom Mison and Katie McGrath', remove_noise=False, is_separate=False, detect_language='en', subtitle_language=None, source_language='英语', target_language='简体中文', source_language_code='en', target_language_code='zh-cn', source_sub='K:/_video_out/_video_out/25.6.23.Monkeys with Tom Mison and Katie McGrath/en.srt', target_sub='K:/_video_out/_video_out/25.6.23.Monkeys with Tom Mison and Katie McGrath/zh-cn.srt', source_wav='E:/Pyvideotrans/tmp9208/a8effc5040/en.wav', source_wav_output='K:/_video_out/_video_out/25.6.23.Monkeys with Tom Mison and Katie McGrath/en.wav', target_wav='E:/Pyvideotrans/tmp9208/a8effc5040/target.wav', target_wav_output='K:/_video
......
:\n - 非翻译内容: 如果某行字幕仅由数字、空格、标点符号或其任意组合构成(例如 ... 或 123-456),则不要翻译。直接将原文复制为译文行,以满足“强制双语格式”规则。\n - 无法翻译的内容: 如果遇到确实无法翻译的文本(如无意义的乱码或特定上下文的专有词),译文行必须是一个空行**。绝不能输出任何解释、注释或错误信息。\n\n# 输出格式\n所有最终结果,即完整的双语SRT内容,都必须被一个 XML 标签严格包裹。除此之外,不要有任何其他多余的文字或解释。\n\n# 输出示例\n`xml\n\n1\n00:00:00,760 --> 00:00:01,256\n原文文本\n英语语言译文文本\n\n2\n00:00:01,816 --> 00:00:04,488\n原文文本\n英语语言译文文本\n\n`\n\n\n\n1\n00:00:00,000 --> 00:00:05,000\n你好啊我的朋友\n'}]
2025-11-10 19:12:01,843 - INFO - Finished call to 'videotrans.translator._localllm.LocalLLM._item_task' after 0.015(s), this was the 1st time calling it.
2025-11-10 19:12:06,859 - INFO - Starting call to 'videotrans.translator._localllm.LocalLLM._item_task', this is the 2nd time calling it.
2025-11-10 19:12:06,859 - INFO -
[localllm]发送请求数据:message=[{'role': 'system', 'content': '您是一名顶级的字幕翻译引擎。'}, {'role': 'user', 'content': '# 角色\n你是一个顶级的SRT字幕翻译引擎,专门负责将SRT字幕精准地翻译成 英语语言。你的核心任务是生成专业、格式严谨的双语对照SRT字幕。\n\n# 核心任务\n处理 标签内的原始SRT字幕,将其翻译成 英语语言,并严格按照下述规则和格式输出。\n\n# 工作流程与规则\n你必须严格遵循以下步骤和规则:\n\n1. **保留结构**: 完整保留原始SRT的序号、时间码(格式为 `00:00:00,000`)以及字幕条目之间的空行。绝不能修改或删除它们。\n\n2. **强制双语格式**: 每个字幕条目必须包含两行文本内容。\n - 第一行:原始字幕文本。\n - 第二行:对应的 英语语言 译文。\n\n3. **翻译风格**:\n - 译文必须通俗易懂、口语化。\n - 优先使用简洁的表达,避免不必要的长句。\n\n4. **特殊内容处理**:\n - **非翻译内容**: 如果某行字幕仅由数字、空格、标点符号或其任意组合构成(例如 `...` 或 `123-456`),则不要翻译。直接将原文复制为译文行,以满足“强制双语格式”规则。\n - **无法翻译的内容**: 如果遇到确实无法翻译的文本(如无意义的乱码或特定上下文的专有词),译文行必须是一个**空行**。绝不能输出任何解释、注释或错误信息。\n\n# 输出格式\n所有最终结果,即完整的双语SRT内容,都必须被一个 XML 标签严格包裹。除此之外,不要有任何其他多余的文字或解释。\n\n# 输出示例\nxml\n\n1\n00:00:00,760 --> 00:00:01,256\n原文文本\n英语语言译文文本\n\n2\n00:00:01,816 --> 00:00:04,488\n原文文本\n英语语言译文文本\n\n\n\n\n\n1\n00:00:00,000 --> 00:00:05,000\n你好啊我的朋友\n'}]
2025-11-10 19:12:06,859 - INFO - Finished call to 'videotrans.translator._localllm.LocalLLM._item_task' after 5.031(s), this was the 2nd time calling it.
2025-11-10 19:12:11,873 - INFO - Starting call to 'videotrans.translator._localllm.LocalLLM._item_task', this is the 3rd time calling it.
2025-11-10 19:12:11,873 - INFO -
[localllm]发送请求数据:message=[{'role': 'system', 'content': '您是一名顶级的字幕翻译引擎。'}, {'role': 'user', 'content': '# 角色\n你是一个顶级的SRT字幕翻译引擎,专门负责将SRT字幕精准地翻译成 英语语言。你的核心任务是生成专业、格式严谨的双语对照SRT字幕。\n\n# 核心任务\n处理 标签内的原始SRT字幕,将其翻译成 英语语言,并严格按照下述规则和格式输出。\n\n# 工作流程与规则\n你必须严格遵循以下步骤和规则:\n\n1. **保留结构**: 完整保留原始SRT的序号、时间码(格式为 `00:00:00,000`)以及字幕条目之间的空行。绝不能修改或删除它们。\n\n2. **强制双语格式**: 每个字幕条目必须包含两行文本内容。\n - 第一行:原始字幕文本。\n - 第二行:对应的 英语语言 译文。\n\n3. **翻译风格**:\n - 译文必须通俗易懂、口语化。\n - 优先使用简洁的表达,避免不必要的长句。\n\n4. **特殊内容处理**:\n - **非翻译内容**: 如果某行字幕仅由数字、空格、标点符号或其任意组合构成(例如 `...` 或 `123-456`),则不要翻译。直接将原文复制为译文行,以满足“强制双语格式”规则。\n - **无法翻译的内容**: 如果遇到确实无法翻译的文本(如无意义的乱码或特定上下文的专有词),译文行必须是一个**空行**。绝不能输出任何解释、注释或错误信息。\n\n# 输出格式\n所有最终结果,即完整的双语SRT内容,都必须被一个 XML 标签严格包裹。除此之外,不要有任何其他多余的文字或解释。\n\n# 输出示例\nxml\n\n1\n00:00:00,760 --> 00:00:01,256\n原文文本\n英语语言译文文本\n\n2\n00:00:01,816 --> 00:00:04,488\n原文文本\n英语语言译文文本\n\n\n\n\n\n1\n00:00:00,000 --> 00:00:05,000\n你好啊我的朋友\n'}]

#7 DeepSeek reply at 10 months ago

从日志可以看出,问题出在本地大模型API的请求处理上。

虽然系统区域已更改,但软件在构建HTTP请求头时仍然遇到了编码问题。

请按以下步骤解决:

  1. 检查本地模型服务状态:首先确认您的本地模型服务(如Ollama)正在运行。

    在浏览器中访问您配置的API地址(如 http://localhost:11434/v1/models)确认服务正常。

  2. 修改翻译渠道:暂时将翻译渠道从"兼容AI/本地模型"切换到 Google翻译 或 百度翻译 等传统在线翻译渠道,以确认问题是否特定于本地模型配置。

  3. 检查API配置:在菜单-翻译设置-兼容AI/本地模型中,确认API地址格式正确,应为完整的URL,如 http://localhost:11434/v1。

  4. 尝试其他AI渠道:如果本地模型持续出现问题,建议使用 DeepSeek 或 Gemini 等在线AI翻译渠道,它们通常更稳定。

如果以上方法仍无法解决,请提供更完整的错误日志,特别是包含具体错误堆栈的部分,以便进一步分析编码问题的根源。

#8 60.163**5 reply at 10 months ago

API地址是按照模板录入的:https://api.moonshot.cn/v1
密钥也是从moonshot里复制下来的,模型类型:moonshot-v1-8k,模型文本框中按模板输入 moonshot-v1-8k,moonshot-v1-32k,moonshot-v1-128k 之前没升级的版本时一直能用

#9 DeepSeek reply at 10 months ago

问题很明确:您配置的是在线API服务(月之暗面Moonshot),而不是本地部署的模型,但软件却错误地将其识别为"本地模型"进行处理,导致了编码冲突。

请按以下步骤修正配置:在菜单栏选择 翻译设置。

找到并点击 MoonshotAI 渠道(不是"兼容AI/本地模型")。

在MoonshotAI的设置界面中,正确填写:API Key:您的Moonshot密钥模型名称:moonshot-v1-8k(或其他您选择的模型)返回主界面,在翻译渠道下拉菜单中选择 MoonshotAI(而不是"兼容AI/本地模型")。

重要说明:"兼容AI/本地模型"渠道专门用于本地部署的模型(如Ollama、OpanAI兼容API),而Moonshot、DeepSeek、OpenAI等在线服务都有各自独立的渠道配置。

配置正确后,编码问题应该会自然解决。

#10 60.163**5 reply at 10 months ago

翻译设置中没有找到MoonshotAI 渠道

#11 DeepSeek reply at 10 months ago

您说得对,pyVideoTrans 目前确实没有专门的 MoonshotAI 渠道。

要使用 MoonshotAI,您需要使用 "兼容AI/本地模型" 渠道,但需要进行正确的配置。

请按以下步骤操作:在菜单栏选择 翻译设置。

点击 兼容AI/本地模型。

在配置界面中填写:API 地址:https://api.moonshot.cn/v1API Key:您的 Moonshot 密钥模型名称:moonshot-v1-8k(或其他您需要的模型)关键步骤:在 请求头 字段中填写:Authorization: Bearer ${apikey}这个请求头格式是 Moonshot API 要求的认证方式,能避免编码问题。

完成配置后,在主界面选择翻译渠道为 兼容AI/本地模型 即可使用 MoonshotAI 进行翻译。

#12 60.163**5 reply at 10 months ago

请求头字段在哪个位置,没找到

#13 DeepSeek reply at 10 months ago

在 pyVideoTrans 的 "兼容AI/本地模型" 配置界面中,确实没有专门的"请求头"字段。

请按以下步骤配置 MoonshotAI:在菜单栏选择 翻译设置。

点击 兼容AI/本地模型。

在配置界面中填写:API 地址:https://api.moonshot.cn/v1API Key:您的 Moonshot 密钥模型名称:moonshot-v1-8k关键步骤:将 API Key 字段中的内容改为完整的认证头格式:Bearer 您的实际API密钥内容例如,如果您的 API Key 是 sk-123456789,那么在 API Key 字段中应该填写:Bearer sk-123456789这样配置后,软件在发送请求时会自动使用这个完整的认证头,应该能解决编码问题。

#14 60.163**5 reply at 10 months ago

修改了还是通不过自带的测试,报错

#15 DeepSeek reply at 10 months ago

请提供具体的错误信息。

在"兼容AI/本地模型"配置界面点击"测试"按钮后,软件会显示详细的错误提示。

请将完整的错误信息复制给我,这有助于准确诊断问题。

同时,请确认您的API密钥格式是否正确:在API Key字段中应该填写完整的 Bearer your_actual_api_key_here,其中 your_actual_api_key_here 替换为您真实的Moonshot API密钥。

另外,请检查网络代理设置:由于Moonshot是国外服务,如果您的网络环境需要代理,请确保在主界面的"网络代理"字段中填写了正确的代理地址(如 http://127.0.0.1:10808)。

请提供测试失败的具体错误信息,这样我才能给出针对性的解决方案。

#16 60.163**5 reply at 10 months ago

无效的值或参数:'ascii' codec can't encode character '\uff1a' in position 14: ordinal not in range(128):Traceback (most recent call last):
File "videotrans\translator\_base.py", line 80, in run
File "videotrans\translator\_base.py", line 143, in _run_srt
File "tenacity\__init__.py", line 338, in wrapped_f
File "tenacity\__init__.py", line 477, in call
File "tenacity\__init__.py", line 378, in iter
File "tenacity\__init__.py", line 421, in exc_check
tenacity.RetryError: RetryError[]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "videotrans\util\TestSrtTrans.py", line 19, in run
File "videotrans\translator\__init__.py", line 907, in run
File "videotrans\translator\_base.py", line 83, in run
File "tenacity\__init__.py", line 480, in call
File "videotrans\translator\_localllm.py", line 54, in _item_task
File "openai\_utils\_utils.py", line 286, in wrapper
File "openai\resources\chat\completions\completions.py", line 1156, in create
File "openai\_base_client.py", line 1259, in post
File "openai\_base_client.py", line 968, in request
File "openai\_base_client.py", line 495, in _build_request
File "openai\_base_client.py", line 439, in _build_headers
File "httpx\_models.py", line 156, in init
File "httpx\_models.py", line 82, in _normalize_header_value
UnicodeEncodeError: 'ascii' codec can't encode character '\uff1a' in position 14: ordinal not in range(128)

=
system:Windows-10-10.0.19045-SP0
version:v3.84
frozen:True
language:zh
root_dir:E:/Pyvideotrans

#17 DeepSeek reply at 10 months ago

这个错误表明软件在构建HTTP请求头时仍然存在编码问题,尽管您已经修改了系统区域设置。

问题出现在请求头中包含中文字符(如中文冒号:)时。

请尝试以下解决方案:临时解决方案:使用其他翻译渠道。

建议暂时使用 Google翻译、百度翻译 或 DeepSeek 等渠道,这些渠道通常更稳定且不会出现此类编码问题。

检查软件版本:确认您使用的是最新版本的 pyVideoTrans。

如果不是最新版,请从官网下载更新。

修改高级选项:在菜单-工具-高级选项中,尝试将 AI翻译每次发送字幕行数 设置为 1,这可能会简化请求数据。

如果以上方法都无法解决,这可能是软件本身的一个bug。

建议您:在软件根目录下的 videotrans/logs/ 文件夹中找到完整的日志文件。

前往 pyVideoTrans 的 GitHub 仓库 (
https://github.com/jianchang512/pyvideotrans) 提交 issue,附上完整的错误日志和您遇到的问题描述。

目前最实用的解决方案是暂时使用其他翻译渠道完成您的翻译任务。

#18 60.163**5 reply at 10 months ago

就是最新版本才出现这样的问题,之前旧版本都是正常的,可以提供原先的版本吗

#19 DeepSeek reply at 10 months ago

我理解您的问题,新版本确实可能存在兼容性问题。

不过,作为AI助手,我无法直接提供软件的历史版本下载。

建议您通过以下方式获取之前的稳定版本:访问 pyVideoTrans 的 GitHub 发布页面:

https://github.com/jianchang512/pyvideotrans/releases在 Releases 页面中向下滚动,查看历史版本发布记录。

寻找 v3.8.3 或更早的版本(因为您提到 v3.84 有问题)。

点击对应版本的 "Assets" 展开下载链接,下载 Windows 版本的压缩包。

同时,建议您在 GitHub 仓库的 Issues 页面反馈这个问题,让开发者了解新版本存在的编码兼容性问题,这有助于尽快修复。

在等待修复期间,您可以暂时使用其他翻译渠道(如 Google翻译、DeepSeek等)来完成当前任务。

Thinking...
Post Your Reply
If you have more than 50 messages, you will no longer receive an automatic reply. Please ask a new question!
Open source and free maintenance is not easy. If this project is helpful to you, please consider making a small donation to help the project continue to maintain and update.

Dondate via ko-fi.com

Related resource