代码之家  ›  专栏  ›  技术社区  ›  Koray Tugay

编码和编程语言之间的协议/关系是什么?

  •  1
  • Koray Tugay  · 技术社区  · 10 年前

    作为测试,我创建了一个名为 程序过程 内容如下:

    public class Hello{
        public static void main(String[] args){
            System.out.println("Hello world!");
        }
    }
    

    我用保存了此文件 UTF-8型 编码。

    无论如何,编译和运行这个问题是没有问题的。此文件是 103字节 长的

    然后我用 UTF-16 BE 编码。这次文件是 206字节 很长一段时间,因为UTF-16井(通常)需要更多的空间,所以这里并不奇怪。

    尝试从我的终端编译文件时,我遇到了所有这些错误:

    Hello.java:4: error: illegal character: '\u0000'
        }
        ^
    

    那么javac是否只适用于UTF-8编码的源文件?这是标准吗?

    javac -version
    javac 1.8.0_45
    

    此外,我只知道Java,但假设您正在运行Python代码或任何解释性编程语言。(很抱歉,如果我错了,我认为Python是被解释的,如果不是。)编码会有问题吗?如果没有,它会对性能产生任何影响吗?

    好的,所以“true”这个词是一个保留的关键字(对于给定的编程语言..),但它是用什么编码保留的?仅限ASCII-UTF-8?

    “true”在硬盘或内存中的存储方式取决于文件保存的编码,因此编程语言必须始终使用源文件的特定编码吗?

    1 回复  |  直到 10 年前
        1
  •  1
  •   Sami Kuhmonen    10 年前

    关于 javac ,您可以使用 -encoding 参数Java内部处理UTF-16中的字符串,因此编译器会将所有内容转换为UTF-16。

    编译器必须知道编码,才能处理源代码。它是什么编译器、解释器或语言都不重要。就像人们不能随便拿语言文本就以为它是德语一样。

    关键字在任何特定编码中都不是保留项。它们是关键词。无论你使用什么编码,你都不能有两种方法来写一个单词。单词是一样的。

    编程语言 不在乎编码。 编译器/解释器