精华内容
参与话题
问答
  • 如果要在python2的py文件里面写中文,则必须要添加一行声明文件编码的注释,否则python2会...# -*- coding:utf-8 -*-  问题就来了,为什么要如此声明? 首先请参考python的PEP http://www.python.org/de
    如果要在python2的py文件里面写中文,则必须要添加一行声明文件编码的注释,否则python2会默认使用ASCII编码。

    [python] view plaincopy
    1. # -*- coding:utf-8 -*-  

    问题就来了,为什么要如此声明?

    首先请参考python的PEP http://www.python.org/dev/peps/pep-0263/

    概要如下

    1.必须将编码注释放在第一行或者第二行

    2.可选格式有

    [python] view plaincopy
    1. # coding=<encoding name>  

    [python] view plaincopy
    1. #!/usr/bin/python  
    2. # -*- coding: <encoding name> -*-  

    [python] view plaincopy
    1. #!/usr/bin/python  
    2. # vim: set fileencoding=<encoding name> :  

    但是再往下看,发现其实只要注释里面有coding 和对应的编码就可以了,例如

    [python] view plaincopy
    1. #!/usr/bin/python  
    2. # vim: set fileencoding=<encoding name> :  

    所以搞了半天对最标准的做法也有点糊涂了。

    后来想了想,看了下VIM中对python的语法高亮文件,里面把如下的正则表达式确定为编码声明

    [plain] view plaincopy
    1. \%^.*\(\n.*\)\?#.*coding[:=]\s*[0-9A-Za-z-_.]\+.*$  

    对于这个正则有些有点看不懂,但是大致如下必须有coding:[编码]或者coding=[编码]才行,这个应该可以视作为标准的声明方式吧。

    但是为什么通常这种方式呢?

    [python] view plaincopy
    1. # -*- coding:utf-8 -*-  

    答案在PEP-0263里面有所提及,那就是Emacs等编辑器使用这种方式进行编码声明。

    话说PEP里面很多东西都是很值得参考的毕竟可以知道为什么程序这样设计。


    相关参考

    PEP-0263

    http://www.python.org/dev/peps/pep-0263/

    vim语法文件编写总结

    http://www.cnblogs.com/kohpoll/archive/2012/08/04/2623483.html

    # -*- coding: UTF-8 -*- 这是个注释吗?

    http://bbs.chinaunix.net/thread-590066-1-1.html


    展开全文
  • vim --cmd "set fileencoding=utf-8

    千次阅读 2009-06-19 17:31:00
    在很多时候,这个fileencoding无法发挥作用:在windows上,用notepad将一个文本文件 test.txt 存储为unicode16或unicode16be然后:vim --cmd "set fileencoding=utf-16" test.txt它还是乱码,用 :set fileecoding ...

    在很多时候,这个fileencoding无法发挥作用:

    在windows上,用notepad将一个文本文件 test.txt 存储为unicode16或unicode16be

    然后:vim --cmd "set fileencoding=utf-16" test.txt

    它还是乱码,用 :set fileecoding 显示是 cp936

    但是:vim --cmd "set fileencoding=utf-16"

    不提供文件名,:set fileecoding 显示正确,是 utf-16

     

    vim --help 提示:

       --cmd <command>      加载任何 vimrc 文件前执行 <command>

     

    说明 fileencoding 是在某个 vimrc 中被修改了,这个“聪明的”vimrc 非常聪明地将fileencoding修改了

    不过我好想没找到那个可以再执行完 vimrc 再执行命令的选项。

     

    ------------------------------------------------------------------------------

    找到了一个办法,在 .vimrc 中,把fileencodings【注意,是复数】那行改成:

    set fileencodings=utf-bom,UTF-8,UTF-16BE,UTF-16,g18030,big5,euc-jp,euc-kr,iso8859-1

    因为utf,前四个,都是非常严格的编码,而 fileencodings 是需要把严格的编码放在最前的,因为它一旦尝试到一种成功的编码之后就不再继续尝试(没有做概率分析,看哪种编码最合适)。

    有个插件,用概率分析判断编码:http://www.vim.org/scripts/script.php?script_id=1708

     

    展开全文
  • eclipse 默认UTF-8 -Dfile.encoding=UTF-8

    千次阅读 2016-02-23 10:51:21
    问题描述: 程序涉及到国际化问题,httpclient抓回来的数据乱七八糟的乱码,在转了几次编码之后在Myeclipse下可以获取正常编码的源码(准确的说是能显示一大部分,少部分内容依然乱码),但是将程序移植到eclipse下...

    问题描述:
    程序涉及到国际化问题,httpclient抓回来的数据乱七八糟的乱码,在转了几次编码之后在Myeclipse下可以获取正常编码的源码(准确的说是能显示一大部分,少部分内容依然乱码),但是将程序移植到eclipse下先前的程序就出现了乱码(移植工作曾经尝试过以下几种形式:1,程序从myeclipse中导出,然后再从Eclipse中导入;2,将Eclipse工作空间切换到myeclipse工作空间。然后将工程编码设置为utf-8)。如果将myeclipse工程使用fatjar打包为可执行jar包,然后在windows下运行的话还是乱码。而在Linux环境下是正常的。
    在Linux上执行定时任务的时候出现乱码(最早的时候系统为默认的环境,安装好的系统没有对环境设置进行修改,这时候程序运行良好,当安装了一些涉及到语言之类的包以后,程序异常)。
    问题分析:
    Myeclipse、Eclipse中的工程编码都是utf-8
    windows环境编码GBK、Linux环境下没有出现异常时默认编码是utf8、异常时虽然 系统环境显示utf-8,但是因为安装了一些涉及系统环境的包之后,对编码为utf-8有些 许怀疑
    程序中转换的最终编码utf-8
    怀疑对象是程序运行环境的默认编码问题
    在使用java自带工具Java virtualVM分析程序内存、线程使用情况时,意外发现JVM arguments一项中的参数对在Eclipse和myeclipse下运行程序有所不同:Eclipse里面得参数只有-Xmx1024m而myeclipse下的程序则多出一项:-Dfile.encoding=UTF-8
    在启动程序时多加上-Dfile.encoding=UTF-8参数,程序Eclipse中乱码消失,Linux下定时任务执行的程序也没有乱码了

    -Dfile.encoding解释:
    在命令行中输入java,在给出的提示中会出现-D的说明:
    -D=
                   set a system property
    -D后面需要跟一个键值对,作用是设置一项系统属性
    对-Dfile.encoding=UTF-8来说就是设置系统属性file.encoding为UTF-8
    那么file.encoding什么意思?字面意思为文件编码。
    搜索java源码,只能找到4个文件中包含file.encoding的文件,也就是说只有四个文件调用了file.encoding这个属性。
    在java.nio.charset包中的Charset.java中。这段话的意思说的很明确了,简单说就是默认字符集是在java虚拟机启动时决定的,依赖于java虚拟机所在的操作系统的区域以及字符集。
    代码中可以看到,默认字符集就是从file.encoding这个属性中获取的。个人感觉这个是最重要的一个因素。下面的三个可以看看。
    /**
         * Returns the default charset of this Java virtual machine.
         *
         *

    The default charset is determined during virtual-machine startup and
         * typically depends upon the locale and charset of the underlying
         * operating system.
         *
         * @return A charset object for the default charset
         *
         * @since 1.5
         */
        public static Charset defaultCharset() {
            if (defaultCharset == null) {
         synchronized (Charset.class) {
       java.security.PrivilegedAction pa =
          new GetPropertyAction("file.encoding");
       String csn = (String)AccessController.doPrivileged(pa);
       Charset cs = lookup(csn);
       if (cs != null)
          defaultCharset = cs;
                    else 
          defaultCharset = forName("UTF-8");
                }
    }
    return defaultCharset;
    }

    在java.net包中的URLEncoder.java中的static块里面:
    dfltEncName = (String)AccessController.doPrivileged (
          new GetPropertyAction("file.encoding")
         );
    在javax.print包中的DocFlavor.java
    static {
       hostEncoding = 
          (String)java.security.AccessController.doPrivileged(
                       new sun.security.action.GetPropertyAction("file.encoding"));
         }
    在com.sun.org.apache.xml.internal.serializer包中的Encodings
    // Get the default system character encoding. This may be
                     // incorrect if they passed in a writer, but right now there
                     // seems to be no way to get the encoding from a writer.
                     encoding = System.getProperty("file.encoding", "UTF8");

    另外另一个网友的博客上面看到的:
    http://yaojingguo.blogspot.com/2009/02/javas-fileencoding-property-on-windows.html
    Java's file.encoding property on Windows platfor 
    This property is used for the default encoding in Java, all readers and writers would default to using this property. file.encoding is set to the default locale of Windows operationg system since Java 1.4.2. System.getProperty("file.encoding") can be used to access this property. Code such as System.setProperty("file.encoding", "UTF-8") can be used to change this property. However, the default encoding can be not changed dynamically even this property can be changed. So the conclusion is that the default encoding can't change after JVM starts. java -dfile.encoding=UTF-8 can be used to set the default encoding when starting a JVM. I have searched for this option Java official documentation. But I can't find it.

    展开全文
  • Java -Dfile.encoding=UTF-8 的使用

    千次阅读 2020-01-13 14:27:08
    Java -Dfile.encoding=UTF-8 遭遇乱码问题的来龙去脉 如下使用:java -XX:MaxPermSize=256M -Dfile.encoding=UTF-8 -Xbootclasspath/a:./acc/library/fc -jar fats.jar 这两天写了一个 Java 程序来玩,结果又遭遇了...

    Java -Dfile.encoding=UTF-8 遭遇乱码问题的来龙去脉

    如下使用:java -XX:MaxPermSize=256M -Dfile.encoding=UTF-8 -Xbootclasspath/a:./acc/library/fc -jar fats.jar

    这两天写了一个 Java 程序来玩,结果又遭遇了以前遇到过很多次的乱码问题,具体描述一下:
    在 Mac 系统里面,常用的 Java 程序启动方式有如下几种:

    1. 通过 eclipse 执行 class 入口文件启动;
    2. 在 Terminal 里面用 java Test.class 或 jave -jar Test.jar 启动
    3. 通过 ant 执行 class 入口文件启动;
    4. 直接用 ant 执行 jar 文件;
    5. 用 Mac OS CoreServices 中的 Jar Launcher.app 执行 jar 文件。
    6. 用 Mac OS 自带的 Jar Bundler.app 将 jar 文件包装成 app,然后执行

    执行途径还是相当地丰富,但以不同的方式来执行,从控制台中得到的程序输出也不一致
    比如说,刚刚在 eclipse 中还能正常打印出来的汉字,在打成 jar 包以后,
    双击该 jar 文件以 Jar Launcher.app 的方式来启动,打印出来的文字就成了乱码了。
    毕竟写出来的 java 程序最终还是要打成 Jar 包来使用的,总不能每次都在 eclipse 中启动吧?
    前面说过,不是第一次碰到这种问题了,于是便想着要把这个问题给解决下。
    灵机一动之下想到一个好办法,在这些启动方式下均把 System 中的属性遍历打印出来,
    然后用 git 来做各个版本的差异比较,有可能会套出一些蛛丝马迹~
    抱着试一试的想法实践了一把,果然发现一些猫腻,集中体现在 file.encoding 这个属性上面。
    file.encoding 属性的值是 UTF-8 时,是不存在乱码问题的,eclipse 执行就属于这种情况。
    Jar Launcher.app 执行时,该属性的值就变成 MacRoman 了,
    上面给出的资料中有对该属性的介绍,可以用 java -D= Test.jar 来更改它。
    另外,只有在启动 java 程序前通过传递参数来更改才有效,程序一经启动就无法再更改了。
    这样的话,也就只有通过传递 jvm 参数的方式来做默认编码的变更了:
    其一,写一个带 -Dfile.encoding=UTF-8 参数的脚本文件来启动;
    其二,用 Jar Bundler.app 打包成 app,效率应该不如第一种方案。
    原理其实都差不多,都只是将更改 jvm 默认编码的操作封装了起来,执行时就不用再手动键入了。

    java 乱码问题 -Dfile.encoding=UTF-8

    -Dfile.encoding 解释:
    在命令行中输入 java,在给出的提示中会出现 -D 的说明:
    -D= # set a system property
    -D 后面需要跟一个键值对,作用是设置一项系统属性
    -Dfile.encoding=UTF-8 来说就是设置系统属性 file.encodingUTF-8
    那么 file.encoding 什么意思?字面意思为文件编码。
    搜索 java 源码,只能找到 4 个文件中包含 file.encoding 的文件,
    也就是说,只有四个文件调用了 file.encoding 这个属性。
    java.nio.charset 包中的 Charset.java 中,这段话的意思说的很明确了。
    简单说就是默认字符集是在 java 虚拟机启动时决定的,
    依赖于 java 虚拟机所在的操作系统的区域以及字符集。
    代码中可以看到,默认字符集就是从 file.encoding 这个属性中获取的。

    Java’s file.encoding property on Windows platform

    This property is used for the default encoding in Java, all readers and writers would default to use this property. “file.encoding” is set to the default locale of Windows operationg system since Java 1.4.2. System.getProperty (“file.encoding”) can be used to access this property. Code such as System.setProperty (“file.encoding”, “UTF-8”) can be used to change this property. However, the default encoding can not be changed dynamically even this property can be changed. So the conclusion is that the default encoding can’t be changed after JVM starts. “java -Dfile.encoding=UTF-8” can be used to set the default encoding when starting a JVM. I have searched for this option Java official documentation. But I can’t find it.

    How do you open a jar file on a mac?

    You can indeed launch a jar file from the command line, with the following command:
    java -jar yourfile.jar
    As well as this you can assign “Jar Launcher” as the default app. To use when you double-click a jar file, as follows (I don’t believe you need the developer tools installed for this):
    Click once on the .jar file in the Finder and then from the menubar in the Finder select File -> Get Info”. Click on “Open with” and from the popup menu select “Other”. A file browser window will open. In this window, go to the /System/Library/CoreServices folder and select ‘Jar Launcher’. Then make sure the “Always Open With” checkbox is checked and then click Add. Then click the “Change all” button so that any jar file will be opened automatically. Finally, close the Info window and now when you double-click any of your jar files they should run automatically.

    展开全文
  • java 乱码问题-Dfile.encoding=UTF-8

    千次阅读 2018-06-26 10:40:54
    windows环境编码GBK、Linux环境下没有出现异常时默认编码是utf8、异常时虽然 系统环境显示utf-8,但是因为安装了一些涉及系统环境的包之后,对编码为utf-8有些 许怀疑程序中转换的最终编码utf-8怀疑对象是程序运行...
  • 程序代码由于其他原因必须在JVM启动参数上加上 -Dfile.encoding=UTF-8,强行设置系统文件编码格式为utf-8.但是这样又出现了一个问题,eclipse控制台 所有中文乱码,包括启动的时候.搞了好几天,在网上也搜索了很多解决...
  • Java -Dfile.encoding=UTF-8的使用

    万次阅读 2015-01-05 16:22:04
    原文地址:... Java -Dfile.encoding=UTF-8 遭遇乱码问题的来龙去脉 ...如下使用:java -XX:MaxPermSize=256M -Dfile.encoding=UTF-8 -Xbootclasspath/a:./acc/library/fc
  • Java -Dfile.encoding=UTF-8 遭遇乱码

    千次阅读 2015-04-24 09:15:20
    Java -Dfile.encoding=UTF-8 遭遇乱码问题的来龙去脉 这两天写了一个 Java 程序来玩,结果又遭遇了以前遇到过很多次的乱码问题,具体描述一下: 在 Mac 系统里面,常用的 Java 程序启动方式有如下几种: 1.通过 ...
  • 问题描述同一个环境,同CID的项目输出后,日志文件汉字出现偶发性乱码,排查服务器环境与项目本身编码都是UTF-8解决办法JVM 读取系统环境语言的优先级是这个样子的 LC_ALL > LC_* > LANG,所以...-Dfile.encoding=UTF-8
  • file.encoding跟操作系统默认字符集有关,Windows下默认的是GBK,但我们程序一般IO流中字符编码一般都设置的是utf-8,这样会导致中文乱码。因此需要修改file.encodingUTF-8.如果应用容器是tomcat,可参考如下修改...
  • 一个工程要生成requirements.txt,查看用到的包,楼主实习结束了,要把工程移交给项目组的同事,移交的时候,楼主打了个requirements.txt引用包。 楼主之前用的方法是 pip freeze > requirements.txt ...
  • “错误: 找不到或无法加载主类 Dfile.encoding=UTF-8” 网上查找不到主类的解决方案都是关于java环境变量的,不过环境变量我弄过很多次了,而且在eclipse里运行hello world也是可以正常输出的 好迷 求指教 (ps:...
  • Tomcat设置-Dfile.encoding=UTF-8 系统默认文件编码,可以解决Activiti6.0 访问localhost:8080/activiti-admin,出现中文乱码问题 Activiti6.0 访问localhost:8080/activiti-admin,出现中文乱码问题: 在activiti-app...
  • 有时候,我们可能会需要修改eclipse上debug或者run状态下的tomcat编码,例如如下图: 假如你想修改eclipse下tomcat启动的时候的编码为GBK: ...2、选中需要的修改编码的tomcat服务器,在右侧的Common标签页的...
  • with open('hello.csv', 'w', encoding='utf-8', newline='')as csv_file: 但是csv文件中的中依旧乱码,经过一顿百度,找到一种解决方式: with open('hello.csv', 'w', encoding='utf-8-sig', newline='')as csv_...
  • 如果使用powershell执行java -Dfile.encoding=utf-8 -jar xxx.jar 则会报错(应该是powershell的参数算法引发的冲突, 可以看没有把后面的".encoding="当做关键字) 所以这时候只要换成cmd执行java -Dfile.encoding...
  • 配置tomcat启动参数-Dfile.encoding=UTF-8后,IDEA控制台出现乱码 解决方法: 在idea的bin目录(如:D:\JetBrains\IntelliJ IDEA 2018.1.4\bin)下找到idea.exe.vmoptions和idea64.exe.vmoptions两个文件 文件的内容...
  • java 乱码详解__jsp中pageEncoding、charset=UTF -8"、(request/response).setCharacterEncoding("UTF-8")   这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来...
  • JSP中pageEncoding、charset=UTF -8"、(request/response).setCharacterEncoding("UTF-8")详 <br />在JSP/Servlet 中主要有以下几个地方可以设置编码,pageEncoding="UTF-8"、contentType="text/html;...
  • 对于存储着极为规整数据的Excel而言,其实是没必要一定用Excel...taxidata.to_excel('t0401.xlsx',encoding='utf-8')taxidata_from_excel = pd.read_excel('t0401.xlsx',header=0, encoding='utf-8')taxidata_from_exc
  • sheetname=k,表明该excel文件的第k个sheet表被取出,default = 0;header = n,表明数据中是否存在列名,如果在第0行,则...encoding表示数据集的字符编码,通常而言一份数据为了⽅便的进⾏⽂件传输都以utf-8作为标准。
  • 如下所示: <%@ page contentType="text/xml" pageEncoding="utf-8"%><?xml version="1.0" encoding="utf-8"?> 但是写HTML文档时,却需要声明charset=utf-8 ...charset=utf-8" pageEncoding="utf-8"%> 求大牛解惑
  • response.setCharacterEncoding(“utf-8”); 当我们在使用字符流写入数据的时候,修改Response容器的编码 ...charset=utf-8”); 告诉浏览器以utf-8码表去显示数据 response.setContentType(“text/html;charset=ut...
  • pageEncoding和charset=UTF-8

    千次阅读 2010-05-26 18:54:00
    jsp中pageEncoding、charset=UTF -8" 在JSP/Servlet 中主要有以下几个地方可以设置编码,pageEncoding="UTF-8"、...charset=UTF -8"、request.setCharacterEncoding("UTF-8")和response.setCharacterEncoding ("U
  • ·JDK1.3 没有 XML 解析器,所有要自己配上 xercesImpl.jar 和 xml-apis.jar ·JDK 1.4.0 和 JDK 1.4.1 虽然具有了 XML 解析器,但是有些 Bug,所有还是得把 xercesImpl.jar 放到 Tomcat/common/endorsed 目录中覆盖...
  • python运行文件是总会出现乱码问题,...# coding=utf-8 或者 # -*- coding:utf-8 -*- # coding=<encoding name> or (using formats recognized by popular editors) # -*- coding: <encoding name>...

空空如也

1 2 3 4 5 ... 20
收藏数 181,312
精华内容 72,524
关键字:

encoding