如何低级别的字符编码​​工作?

比方说,我有一个名为sometext.txt它文本文件中有一行 - “骰森佩尔tyrannis”,这是(纠正我,如果我错了..)

83 105 99 32 115 101 109 112 101 114 32 116 121 114 97 110 110 105 115

(十进制ASCII)

当我使用标准库文件I / O程序从文件中读取这一行,我不进行编码工作的任何字符。(还是我?)

现在的问题是:哪一个软件组件实际转换0和1成字符(即包含了转换0和1成字符算法)? 它是操作系统组件? 哪一个??

--------------解决方案-------------

都是一堆1和0的。

一个ASCII“A”仅仅是个字母当值(01000001b,或×41或65月)的“遭遇”(依赖于环境,自然)显示。 没有“转化”; 它是由一个公认的定义映射同样的事情,只是有不同的看法。


的Unicode(以及其他多字节)字符集通常使用不同的编码; 以UTF-8(一个Unicode编码),例如,一个单一的Unicode字符可被映射为1,2,3或4个字节根据字符。Unicode编码转换经常发生在该来作为其一部分的IO库语言或运行 ; 然而,支持Unicode的操作系统也需要了解Unicode编码本身(系统调用),所以该行可以模糊。

UTF-8有很好的属性,所有正常的ASCII字符映射到单个字节,这使得它最兼容Unicode编码与传统的ASCII。

首先,我建议你读的绝对最低每一个软件开发人员绝对,积极必须了解Unicode和字符集(没有借口!)。


当我使用标准库文件I / O程序从文件中读取这一行,我不进行编码工作的任何字符。(还是我?)

这在很大程度上取决于标准库,你的意思。

在C中,当你写:

FILE* f = fopen("filename.txt", "w");
fputs("Sic semper tyrannis", f);

无编码转换进行; 该char的字符串s的只是写入文件原样(换行除外)。 (编码当您正在编辑的源文件是相关的。)

但是在Python 3.x中,当你写:

f = open('filename.txt', 'w', encoding='UTF-8')
f.write('Sic semper tyrannis')

write函数执行从Python的UTF-16位/ 32编码的内部转换str类型的磁盘上使用UTF-8编码。


现在的问题是:哪一个软件组件实际转换0和1成字符(即包含了转换0和1成字符算法)? 它是操作系统组件? 哪一个??

解码功能(像MultiByteToWideCharbytes.decode )为适当的字符编码转换字节到Unicode点,这是唯一标识的字符的整数。 A字型转换代码点字形 ,出现在屏幕上或纸上的人物形象。

其中软件组件实际转换0和1成字符(即包含了转换0和1成字符算法)?

这取决于你所使用的languge。 例如,Python有字符编码的功能:

>>> f = open( ...., 'rb')
>>> data = f.read()
>>> data.decode('utf-8')
u'café'

在这里,Python已经转换成字节序列成Unicode字符串。 确切的成分通常是在用户空间库或程序,但是一些编译器需要字符编码的知识。

下面,它的字节,这是1和0的所有序列。 然而,鉴于一个字节序列该字符在这些代表什么? ASCII就是这样一个“字符编码”,并告诉我们如何编码或解码AZ,az和几个。 很多人,noteably UTF-8(统一的编码)。 最后, 如果你正在处理的文字,你需要知道什么字符编码就进行编码。

像奇爱博士说,这是1的&0的一路到你的显示屏和超越 - 在'A'字是像素的颜色/亮度是由位显示驱动程序定义的数组。 转动该像素阵列成可理解的字符需要连接到10 ^ 11阈逻辑门运行的自适应,大规模并行OS和,没有人理解应用生物电化学摄像机,尤其是一些啤酒后

不完全知道什么你问。 该文件中的0和1的被阻塞成可以由磁盘驱动器代表ASCII码字节 - 它将只读八位/写块。 的ASCII码字节通过使用所选择的字体显示驱动器呈现为可显示的位图。

RGDS,马丁

它有什么(当然,没有那么多)做的与0和1。 大多数字符编码与8位字节全部工作。 每次你写的数字代表一个字节。 在ASCII,每个字符是单字节。 除此之外,ASCII是ANSI和UTF-8的的一个子集,使得它以最常用的字符集相兼容。 ASCII只包含字节范围的前半部分。 字符数高达127。

对于ANSI你需要一些编码。 ANSI指定的字节范围的上半部的字符。 在UTF-8,不存在这些ANSI字符。 相反,这些最后128个字节表示一个字符的一部分。 整整一个字符由2到4个字节。 除128个ASCII字符。 他们依然是原来的单字节字符。 我认为这主要是做,因为如果UTF-8将不与ASCII兼容,有没有办法美国人会就采用了。 ;-)

但是,是的,操作系统也具有多种功​​能与字符编码工作。 他们是依赖于操作系统和平台,但如果我看了你的问题的权利,你没有真正寻找一些特定的API。 你的问题不能回答具体的。 有许多方法,字符的工作,而这些是与实际的字符数据,并将其写入到屏幕之间的主要区别。 (字符和字体之间的差)。

分类:字符编码 时间:2012-01-01 人气:0
本文关键词: 字符编码
分享到:

相关文章

  • 我在哪里可以找到一个很好的介绍字符编码? 2012-01-06

    我必须写一些代码与字符编码工作. 是否有一个很好的介绍这个问题让我开始? --------------解决方案------------- 先贴在什么每个开发人员都应该知道的字符编码​​. 如果你写的代码,触及一个文本文件,你可能需要这个. 让我们从两个关键项目开始 1.Unicode不解决这个问题,我们(还). 2.每个文本文件进行编码. 有没有这样的事,作为一个未编码的文件或"一般"的编码. 并允许添加codacil到这一点 - 大多数美国人可以通过,而无需借此到账户 - 大部分时间

  • 从一个默默无闻的字符编码​​读取字符 2012-01-06

    我有一个来自未知字符编码的旧数据库传来的字符串. 我有麻烦的编码/过滤字符串,以显示正确的文本. 什么数据看起来像在数据库:Marronnière谩世嘉锅 我们需要的字符串显示为:Marronnièreà世嘉锅 具体来说,我无法解析字符串,所以我可以显示一个字符( à ) 这是使用SQL Server 2005数据库的asp.Net 2.0网站用VB写的. 不知道它的问题,但数据来自于与此归类列:SQL_Latin1_General_CP1_CI_AS 我已经试过编码代码无果串各种编码. 我也

  • 字符编码不被拾起 2012-01-08

    http://www.mamstore.co.uk/bin/pxisapi1.exe/catalogue?level=805838 你看它的地方(意思是说)£5 T恤衫. 相反,"£"出来作为无效字符,但完全相同的字符显示下方的产品. 我收到同样的,当我在使用jQuery拉一个PHP文件内容. 实际的PHP文件正确显示字符(没有任何头/定身等),只要我拉入它突然有问题,与它的站点. 其存储在一个自定义生成CMS / WMS系统中的SQL数据库. 任何建议将不胜感激. 干杯 ------

  • 在Glassfish 3.01 JSP UTF-8字符编码错误 2012-01-09

    我有一个相当starange问​​题. 在我的web应用程序我用UTF_8编码. 直到我把JSP页面到我的/保护/文件夹也能正常工作. 完全相同的JSP文件只是罚款乌德我的文档根目录. 到达/保护/文件夹我用的过滤器. 喜欢这个: public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpS

  • 多维数组不断变化的字符编码 2012-01-19

    我有一个多维数组,它看起来是这样的: ourThing = array( 'id' => 1, 'title' => 'foo', 'data' => array( 'name' => 'bar', 'metadata' => array( 'time' => '2011-02-01 12:00:00' ) ) ); 现在,因为我必须使用json_encode和json_decode他们,我需要至少在东西存储data为UTF-8. 不幸的是,该网站使用Windows 1

  • 字符编码不PrimeFaces CellEditor的组件工作 2012-01-20

    我有一些麻烦,使用编辑表格<p:rowEditor> 我用的encoding='windows-1252'才能够使用瑞典字符 (å, ä, ö) 创建一个实体工作正常,但是当我在编辑<p:dataTable>使用<p:cellEditor>它承诺是意外的字符. (如果我输入"åäö"保存修改(使用p:celleditor ),在数据库中的表包含"åäö" 我的XHTML页面开始是这样的: <?xml version='

  • 字符编码问题 - 奇怪的行为从井号(£)使用UTF-8 IE6 / ASP / XML 2012-01-20

    我有一个很奇怪的问题,井号显示不正确(或根本没有)在网页上. 我在显示在一个新的IE(6)窗口之前存储在XML文本框,然后得到(简述)键控文本. 最糟糕的是,这是不一致的. 我有发生三种不同的东西: 1英镑符号甚至没有出现在源代码中(假设,因为它似乎在默认情况下使用UTF-8 XML被剥了这一点). 2.英镑符号会出现在源代码,但不能在网页上. 3.英镑符号会出现在源和精细网页上(通常情况下,如果这种情况发生在所有的第一次,这是显示). 现在,这只是一个特定的一个更大的问题的一部分. 我一直在寻

  • 字符编码的问题,电子邮件格式 2012-01-27

    我有一个客户使用给我们发送电子邮件一个简单的JSP形式. 虽然在一些场合的电子邮件来通过格式不正确的文字=?ISO-8859-1?Q?零星整个邮件的文本显示. 我知道,ISO-8859-1是一种字符编码,虽然我不知道如何错误发生,已经无法重现此错误. 我曾尝试填写与使用Firefox选择不同的字符编码​​的形式,但仍然无法重现. 我曾尝试使用与中国Win XP的语言设置一台笔记本电脑填写表格,也无法重现此错误. 有没有人见过这个错误,或者有任何想法如何,我可以重现此呢? 感谢您的意见 - 我仍然

  • 从LATIN1显示cyrilic字符编码MySQL表 2012-01-29

    我有一个包含西里尔文字符的latin1_swedish_ci表. 当我看到通过phpmyadmin的数据,tooks是这样的: Ã'ˆÃ²ÃÂμùÃ'â€AA°Ã'â,¬Ã'ÂúøÃÂμAA±AA°Ã½ÃºÃ¸Ã¾Ã'‚úðAA·Ã'€¹Ã²Ã°Ã'ŽÃ'‚Ã'ÂÃ" ÂþÃ'‚Ã'ÂþñAA»Ã'ŽÃÂ'ÃÂμýøÃ'ÂÃ'€šÃ'â,¬Ã°ÃÂ'øÃ'â€Ã¸Ã¾Ã½Ã½Ã¾Ã¹Ã'€SAA°ÃÂ

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.646 (s). 10 q(s)