你好,
即使我真的尝试过...当涉及到 Python、Windows、Ansi 和 时,我仍然陷入困境并且有些绝望字符编码。我真的需要帮助……过去几个小时在网上搜索没有任何帮助,它只会让我发疯。
我是 Python 的新手,所以我几乎不知道发生了什么。我即将学习这门语言,所以我的第一个程序(快 完成了)应该会自动从包含 mp3 的给定文件夹生成音乐播放列表。这工作得很好,除了一个问题......
...我无法将元音 (äöü) 写入播放列表文件。
在我为 sys.argv 中的“错误编码” 数据找到解决方案后,我能够处理该问题。从 MP3 中读取元数据时,我使用某种简单的字符替换来去除所有那些国际特殊字符,例如法国口音或这个疯狂的斯堪的纳维亚语 “o” 中的斜杠 < em="">(我什至不知道如何打字...)。一切都很好。
但我想至少将提到的 Umlaute 写入播放列表文件,这些字符在德国真的很常见。与元数据不同,在元数据中我不关心一些丢失的字符或拼写错误的单词,这是相关的 - 因为现在我正在写文件的路径。
我已经尝试了很多不同的编码和解码方法,我无法在这里一一列举。哎呀,我什至无法分辨我半小时前尝试了哪些设置。我在网上、这里和其他地方找到了代码,它们似乎可以用于某些目的。不适合我的。
我认为棘手的部分是:问题似乎是我需要写入的文件的 Ansi 调用格式。正确 - 我实际上需要这个 Ansi-stuff。大约两个小时前,我实际上设法将我想要的任何内容写入 UFT-8 文件。像魅力一样工作......直到我意识到我的播放器 (Winamp,旧版本) 不知何故不能与那些 UTF-8 播放列表文件一起工作。它无法解析路径,即使它在我的编辑器中看起来正确。
如果我将文件格式改回 Ansi,包含特殊字符的路径会损坏。我只是在猜测,但如果 Winamp 将此 UTF-8 文件读取为 Ansi,那将导致我现在遇到的问题。
所以...
line.write(str.decode('utf-8')) 破坏了文件的功能# -*- coding: iso-8859-1 -*- 在这里什么也没做 (尽管它对提到了元数据和其中允许的字符...)有没有人可以指导我走出这个编码 hell ?欢迎任何帮助。如果我需要 500 行代码用于其他函数或类,我会输入它们。如果有处理此类问题的模块,请告诉我!我会买它!任何有用的东西都会被测试。
感谢阅读,感谢评论,
问候!
最佳答案
如评论中所述,您的问题不是很具体,因此我会尝试为您提供一些有关字符编码的提示,看看您是否可以将这些提示应用于您的具体情况!
这是一个关于编码的小入门。基本上,在 Python 中有两种表示文本的方法:
unicode .你可以认为 unicode是最终的编码,你应该努力在任何地方使用它。在 Python 2.x 源文件中,unicode字符串看起来像 u'some unicode' .str .这是编码文本 - 为了能够阅读它,您需要知道编码(或猜测)。在 Python 2.x 中,这些字符串看起来像 'some str' .这在 Python 3 中发生了变化(unicode 现在是 str 并且 str 现在是 bytes)。
通常,确保您的代码使用 unicode 非常简单用于执行,并使用 str对于 I/O:
input_string.decode('encoding')将其转换为 unicode .output_string.encode('encoding') .最常见的编码是 cp-1252在 Windows 上(在美国或欧盟系统上),以及 utf-8在 Linux 上。
Windows native 使用 unicode对于文件路径和名称,所以你实际上应该总是使用 unicode对于那些。
当你写入文件时,一定要始终通过 output.encode('cp1252') 运行你的输出(或者 whatever encoding ANSI 将在您的系统上)。
现在你可能已经意识到:
str确实是str例如,Python 将尝试将其转换为 unicode使用 utf-8编码,然后尝试再次编码(可能在 ascii 中)以将其写入文件str实际上是一个 unicode例如,Python 将首先对其进行编码(可能在 ascii 中,这可能会崩溃),然后才能对其进行解码。底线是,你需要知道 str是unicode ,你应该 encode它。如果它已经编码,请不要触摸它(或者 decode 然后 encode 如果编码不是你想要的!)。
不足为奇,这只是告诉 Python 应该使用什么编码来读取源文件,以便正确识别非 ASCII 字符。
Python 3 可能是 unicode 和编码方面的重大更新,但这并不意味着 Python 2.x 无法使其工作!
你不能确定,有可能问题出在你使用的播放器上,而不是你的代码上。
输出后,您应该确保脚本的输出可以使用引用工具(例如 Windows 资源管理器)读取。如果是,但播放器还是打不开,你应该考虑升级到新版本。
关于Python、Windows、Ansi——再次编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14079343/
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
我正在使用ruby1.9解析以下带有MacRoman字符的csv文件#encoding:ISO-8859-1#csv_parse.csvName,main-dialogue"Marceu","Giveittohimóhe,hiswife."我做了以下解析。require'csv'input_string=File.read("../csv_parse.rb").force_encoding("ISO-8859-1").encode("UTF-8")#=>"Name,main-dialogue\r\n\"Marceu\",\"Giveittohim\x97he,hiswife.\"\
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m