python默认的字符编码是啥
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python默认的字符编码是啥相关的知识,希望对你有一定的参考价值。
Python的默认编码是ASCII格式:
ASCII(American Standard Code for Information Interchange),是一种单字节的编码。计算机世界里一开始只有英文,而单字节可以表示256个不同的字符,可以表示所有的英文字符和许多的控制符号;
源代码文件中,如果有用到非ASCII字符,则需要在文件头部进行字符编码的声明,如下:#-*- coding: UTF-8 -*-
实际上Python只检查#、coding和编码字符串,其他的字符都是为了美观加上的。另外,Python中可用的字符编码有很多,并且还有许多别名,还不区分大小写,比如UTF-8可以写成u8。
u"abc"是unicode本回答被提问者采纳 参考技术B 系统默认的字符编码 参考技术C 看你的程序文件以什么编码保存.
JVM 的默认编码是啥?
【中文标题】JVM 的默认编码是啥?【英文标题】:What is the default encoding of the JVM?JVM 的默认编码是什么? 【发布时间】:2010-11-03 15:00:15 【问题描述】:UTF-8 是 Java 中的默认编码吗? 如果不是,我怎么知道默认使用哪种编码?
【问题讨论】:
【参考方案1】:JVM 的默认字符集是运行它的系统的字符集。这没有特定的值,您通常不应依赖默认编码是任何特定值。
可以在运行时通过Charset.defaultCharset()
访问它,如果这对您有任何用处,但实际上您应该指出始终明确指定编码。
【讨论】:
如果你是对的,我觉得有点奇怪java.sun.com/javase/technologies/core/basic/intl/… 说它总是 UTF-16。 UTF-16 是 JVM 内部表示文本的方式。默认编码决定了 JVM 如何解释从文件中读取的字节(例如使用FileReader
)。
这个答案是正确的,但是作为参考,在Linux上它通常是“UTF-8”,而在Windows上它通常是“cp1252”。
我刚刚经历了一个 linux 安装,它从语言环境报告 UTF-8,但 java 说的是 US-ASCII。
错了。检查Charset.defaultCharset()
源代码。它读取 file.encoding
属性,否则使用 UTF-8。【参考方案2】:
请注意,您可以使用名称容易混淆的属性file.encoding
更改 JVM 的默认编码。
如果您的应用程序对编码特别敏感(可能通过使用暗示默认编码的 API),那么您应该在 JVM 启动时将其显式设置为一致(已知)值。
【讨论】:
请注意,file.encoding
必须在 JVM 启动时指定(即作为命令行参数 -Dfile.encoding 或通过 JAVA_TOOLS_OPTIONS);您可以在运行时设置它,但这并不重要。见***.com/questions/361975/…【参考方案3】:
共有三种“默认”编码:
file.encoding:System.getProperty("file.encoding")
java.nio.Charset:Charset.defaultCharset()
以及InputStreamReader的编码:InputStreamReader.getEncoding()
您可以在this page 上阅读更多相关信息。
【讨论】:
【参考方案4】:要获取默认的 java 设置,只需使用:
java -XshowSettings
【讨论】:
【参考方案5】:我确信这是特定于 JVM 实现的,但我能够通过执行“影响”我的 JVM 的默认 file.encoding:
export LC_ALL=en_US.UTF-8
(在 Ubuntu 12.04 上运行 java 版本 1.7.0_80)
此外,如果您从 unix 控制台输入“locale”,您应该会在此处看到更多信息。
所有功劳归http://www.philvarner.com/2009/10/24/unicode-in-java-default-charset-part-4/
【讨论】:
你是怎么检查的?我找不到证明 Java 对语言环境字符串中的编码给予任何关注的证据。仅来自file.encoding
属性。
@ArtemNovikov - 是的,但是file.encoding
的默认值是多少?根据sprops.encoding
的值在java.lang.System.initProperties
中初始化,其中sprops
是本机函数GetJavaProperties()
返回的结构体,其实现因平台而异。例如,在 Windows 版本中,它调用 GetUserDefaultLCID()
,然后调用 GetLocaleInfo (lcid, LOCALE_IDEFAULTANSICODEPAGE, ...)
来查找用户的默认 ANSI 代码页并使用它。在 Unix 平台上,它解析 setlocale(LC_CTYPE, NULL)
的返回值。
... 有关详细信息,请参阅 hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/… 和 hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/solaris/…。【参考方案6】:
您可以使用它来打印出 JVM 默认值
import java.nio.charset.Charset;
import java.io.InputStreamReader;
import java.io.FileInputStream;
public class PrintCharSets
public static void main(String[] args) throws Exception
System.out.println("file.encoding=" + System.getProperty("file.encoding"));
System.out.println("Charset.defaultCharset=" + Charset.defaultCharset());
System.out.println("InputStreamReader.getEncoding=" + new InputStreamReader(new FileInputStream("./PrintCharSets.java")).getEncoding());
编译并运行
javac PrintCharSets.java && java PrintCharSets
【讨论】:
【参考方案7】:它将取决于语言环境。不同的语言环境,不同的默认编码。
【讨论】:
所以这取决于主机操作系统的编码?以上是关于python默认的字符编码是啥的主要内容,如果未能解决你的问题,请参考以下文章