我对计算机中角色的编码感兴趣。
当我用xxx.c
打开visual studio code
时,VS代码如何检测我的文件的编码并解释这些" 01"序列。此外,视觉工作室代码(甚至计算机系统)如何在屏幕上显示我的" 01"序列文件和字符编码?
谢谢!
我在项目中也使用中文。有时,文件编码真的让我疯狂。有时,编辑utf-8
创建的正确A
文件被某些文本编辑器B
销毁,并将其解释为GBK
文件,并编辑A
永远无法恢复原状。
我搜索了很多,但大多数答案似乎过于抽象或无关紧要。我想弄清楚软件和计算机系统(或操作系统)如何合作完成这项简单而重要的工作!
答案 0 :(得分:0)
首先,“永远无法取回”:Always Use Source Code Control
“软件和计算机系统(或操作系统)如何合作完成这项简单而重要的工作!”: 他们不这就是问题!
简史:几十年前,人们使用小字符集。这个想法是一个系统总是使用相同的系统。简单。每次在系统之间传输文本文件时,它都会立即转录为本地字符编码。然后是以不同编码保存文本文件所需的文件交换和系统的全球化。没有记录编码的一般方法。 1991年出现了巨大的字符集Unicode。语言(VB4,Java),操作系统API(Win32),文件系统(NTFS),...开始采用它。但是,它的编码(UTF-8,UTF-16)只是编码文本文件使用的更多可能性。许多读取文本文件的程序要么依赖系统默认编码的旧系统,要么猜测(“检测”)。
在编程领域,有些语言要求源文件使用特定的编码(比如UTF-8);在其他情况下,工具默认为特定编码(例如UTF-8)。在大多数情况下,提供C或C ++实现的工具集将具有一组一致的规则。如果您还使用IDE或其他形式的项目系统,则可以为整个项目设置编码,在某些情况下还可以设置特定文件。
因此,唯一的解决方案是仅使用适合您的工具并正确配置它们。 如果疼,请停止这样做。
除此之外:关于编程和默认字符编码的主题,请注意不要被各种语言库使用系统默认字符编码欺骗 - 除非这正是所需要的。否则,您将向用户提供与您遇到的问题相同的问题。 (在Java中,只需使用显式参数来避免它。在C和C ++库中,编码被组合到Locales中。但请注意,许多系统初始化程序以使用默认字符编码。
答案 1 :(得分:-1)
众所周知,计算机无法存储“字母”,“数字”, “图片”或任何其他。它唯一可以存储和工作的东西 与位。一点只能有两个值:
yes
或no
,true
或false
,1
或0
或您想要称呼的其他任何内容 两个值。由于计算机使用电力,“实际”位是一个小点 那里有或没有的电力。对于人类来说,这通常是 用1和0表示。
除了位之外,要使用位来表示任何内容,我们需要规则。 我们需要将一系列位转换为字母, 使用编码方案的数字和图片,或简称为编码。
01100010(b)01101001(i)01110100(t)01110011(s)
ASCII table中指定了 95 人类可读字符,包括上下字母A到Z 案例,数字0到9,一些标点符号和 美元符号,符号和其他一些字符。它 对于空格,换行,制表符等内容,还包含 33 值 退格等。这些本身不可打印,但仍然可见 以某种形式直接对人类有用。
要用ASCII编码内容,请按照从右到左的表格, 用字母代替位。将一串位解码为人 可读字符,从左到右依次表示,替换 字母的位。
并非所有欧洲人都使用过字母和波浪形的所有变体 语言可以在同一个表中表示,最多256个 值。因此,世界最终得到的是丰富的编码 所有的方案,标准,事实上的标准和半标准 涵盖不同的字符子集。有人需要写一个 关于意大利语的文档和你一样,发现没有编码 涵盖两种语言并发明了一种。或者我认为它去了 无数次。
如何正确处理编码?
知道对某段文字进行编码,即某个字节 序列,在,然后用该编码解释它。这就是全部 需要做。如果您正在编写允许用户输入的应用程序 一些文本,指定您从用户接受的编码。任何 在某种文本字段中,程序员通常可以决定其编码。 对于任何类型的文件,用户可以上传或导入到程序中 需要是规范该文件编码的规范。 或者,用户需要某种方式来告诉程序什么 编码文件是在。此信息可能是文件的一部分 格式本身,或者它可能是用户做出的选择(不是那样 大多数用户通常会知道,除非他们已经阅读过这篇文章。)
UTF-8和ASCII
关于UTF-8的巧妙之处在于它与二进制兼容 ASCII,它是所有编码的事实上的基线。所有 ASCII编码中可用的字符只占用一个字节 在UTF-8中,它们与ASCII中使用的字节完全相同。在 换句话说,ASCII地图1:1到UTF-8。任何不是ASCII的字符 在UTF-8中占用两个或更多字节。对于大多数编程语言 期望解析ASCII,这意味着您可以包含UTF-8文本 直接在你的程序中:
$ string =“汉字”;
如果你想要这是链接...这很有趣......
有用吗?我希望如此!!
祝你好运
代码在这里
// decoder
set x = WScript.CreateObject("WScript.Shell")
mySecret = inputbox(" decrypt text")
'Reverse the submitted text'
mySecret = StrReverse(mySecret)
'open up an istance of notepad to print'
x.Run "%windir%\Notepad"
wscript.sleep 1000