我正在使用python2,我想将非utf-8文本转换为可读的字符串。我正在尝试使用latin-1和utf-8进行解码。但是我没有成功。
这是字符串
s = ' ¤¿à¤²à¤¾ मेंदान रोड़ इंदौर'
我尝试过:
s.decode('utf-8')
我得到以下输出:
u' \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xbf\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xb2\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xbe \xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xae\xc3\u0192\xc2 \xc3\u201a\xc2\xa5\xc3\xa2\xc2\u20ac\xc2\xa1\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\xa2\xc2\u20ac\xc2\u0161\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xa6\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xbe\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xa8 \xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xb0\xc3\u0192\xc2 \xc3\u201a\xc2\xa5\xc3\xa2\xc2\u20ac\xc2\xb9\xc3\u0192\xc2 \xc3\u201a\xc2\xa5\xc3\u2026\xc2\u201c \xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\xa2\xc2\u20ac\xc2\xa1\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\xa2\xc2\u20ac\xc2\u0161\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xa6\xc3\u0192\xc2 \xc3\u201a\xc2\xa5\xc3\u2026\xc2\u2019\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xb0'
上面的输出仍然不可读。
任何帮助将不胜感激
答案 0 :(得分:1)
第一件事:您必须read this,没有任何借口。
完成后,您将了解,尝试在不知道原始编码的情况下将字节字符串解码为unicode通常会浪费时间。
第二点:此(为便于阅读而缩短):
sealed class Platform {
abstract val name : String
sealed class Local : Platform() {
object Default : Local() {
override val name: String = "android"
}
object Amazon : Local() {
override val name: String = "android-amazon"
}
}
object Missing : Platform() {
override val name: String = "missing"
}
data class Remote(override val name: String) : Platform()
companion object {
@JvmName("from")
@JvmStatic
operator fun invoke(name: String?): Platform = when (name) {
Local.Default.name -> Local.Default
Local.Amazon.name -> Local.Amazon
Missing.name -> Missing
null -> Missing
else -> Remote(name)
}
@JvmField
val LOCAL : Platform = if (BuildConfig.amazon) Local.Amazon else Local.Generic
@JvmField
val MISSING : Platform = Missing
}
}
是python Unicode字符串的内部表示形式-通过显示字节字符串的内部表示形式,您将得到类似的结果:
@AutoValue
public abstract class Session implements Serializable {
public static final Session NONE_FOUND = from(0, new DateTime(0), Platform.MISSING);
public static Session from(String id, @Nullable Platform lastPlatform) {
Platform platform = lastPlatform == null ? Platform.MISSING : lastPlatform;
return new AutoValue_Session(id, platform);
}
public static Session from(RemoteSession remote) {
return from(
remote.id(),
remote.lastPlatform()
);
}
public abstract String id();
public abstract Platform lastPlatform();
}
因此,您唯一的问题是将内部表示与“人类可见”的输出相混淆
现在请注意,最终如何将字符串显示给用户取决于进行渲染的软件(如果从命令行运行python并打印到stdout,则您的xterm或等效项;如果将其作为服务器的一部分进行渲染,则您的浏览器会-端生成的HTTP响应等)和系统设置,所有这些都不在Python的职责范围内。