【问题标题】:How to save the text on a web page in a particular encoding?如何以特定编码保存网页上的文本?
【发布时间】:2018-04-03 12:20:38
【问题描述】:
我从link读到以下句子
内容作者需要了解如何声明字符编码
用于他们正在使用的文档格式。
请注意,仅在页面中声明不同的编码不会
改变字节; 您也需要以该编码保存文本。
据我所知,文本中的字符以一个或多个字节的形式存储在计算机中,而与网页中指定的“字符编码”无关。
我也理解了上面引用的文字,除了最后一句用粗体字
您也需要以该编码保存文本
- 这句话是什么意思?
- 是说内容作者/开发者必须以他/她指定的编码手动保存相同的文本(已作为一个或多个字节存储在计算机中)?如果是,如何做以及为什么需要做?如果不是,那么这句话的真正含义是什么?
【问题讨论】:
标签:
encoding
character-encoding
character
byte
webpage
【解决方案1】:
当您从最基本的意义上公开一个网页时,您将一个文本文件(位于您拥有的硬件上)公开,即当请求某个地址时您返回此文件。
该文件可以保存在您的本地硬件上或可能不保存在那里(动态内容)。无论如何,访问您的网页的用户都会获得一个文件。一旦用户获得文件的所有权,他应该能够读取它,这就是编码发挥作用的地方。如果你有一个原始二进制文件,你只能猜测它包含什么以及它的编码,所以大多数网页都提供了它们在文件旁边返回文件的编码。
这是您询问的粗体文本可能与我的回答相关的地方 - 如果您在文件旁边提供一种编码(例如 utf 8),但以用户可能会看到的另一种编码 (ASCII) 交付文件部分文本或可能根本看不到它。如果您提供一个静态文件,它应该以正确的编码保存(即您告诉您的文件将使用的编码)。
至于如何存储它的问题 - 这与您提供文件的方式高度相关。大多数文本编辑器都提供了以特定编码保存文件的方法。并且大多数显示页面内容的工具都提供了方便的方法来以一种易于用户解码的形式提供文件。
【解决方案2】:
这只是一个注释,可能是因为一些用户的混淆。
文本告诉我们应该以某种形式指定文件的编码。这很简单。 Webserver 通常无法知道文件的编码。请注意页面是否由例如一个数据库,编码可以是隐式的,但是web认为文件是一等公民,所以我们仍然需要指定编码。
注释清楚地表明,通过更改编码,网页不会被浏览器转码。该页面将保持每个字节相同,只是客户端(浏览器)会误解内容。所以如果你想改变编码,你应该指定新的编码,还要将文件保存(或保存并转换)为预期的编码。网络服务器(通常)不会做任何魔法。
【解决方案3】:
没有文本,只有编码文本。
字符编码的基本规则是读取器必须使用与写入器相同的编码。这需要沟通、约定、规范或标准来建立协议。
"是不是说内容作者/开发者必须以他/她指定的编码手动保存相同的文本(已经作为一个或多个字节存储在计算机中)?如果是,如何这样做以及为什么需要这样做?”
是的,每个文本文件都选择字符编码。显然,如果文件已经存在,最好不要更改编码。您可以通过一些编辑器选项(尝试另存为...对话框或等效项)或通过一些库属性或配置来完成。
“也将文本保存在该编码中”
实际上,通常情况正好相反。您决定您想要或需要使用的编码,HTML 编辑器或库使用匹配的声明和任何新的必要字符实体引用更新内容(例如,? 是否需要写为 🚲?¡在写入或流式传输文档时写为 ¡?)。 (如果您的编辑器不这样做,那么请使用真正的 HTML 编辑器。)