zoukankan      html  css  js  c++  java
  • 字符编码 乱码问题

    字符编码 乱码问题

    首先明确概念
    #1、文件从内存刷到硬盘的操作简称存文件
    #2、文件从硬盘读到内存的操作简称读文件
    
    乱码的两种情况:
    #乱码一:存文件时就已经乱码
    存文件时,由于文件内有各个国家的文字,我们单以shiftjis去存,
    本质上其他国家的文字由于在shiftjis中没有找到对应关系而导致存储失败
    但当我们硬要存的时候,编辑并不会报错(难道你的编码错误,编辑器这个软件就跟着崩溃了吗???),但毫无疑问,不能存而硬存,肯定是乱存了,即存文件阶段就已经发生乱码
    而当我们用shiftjis打开文件时,日文可以正常显示,而中文则乱码了
    
    #用open模拟编辑器的过程
    可以用open函数的write可以测试,f=open('a.txt','w',encodig='shift_jis'
    f.write('你瞅啥
    何を見て
    ') #'你瞅啥'因为在shiftjis中没有找到对应关系而无法保存成功,只存'何を見て
    '可以成功
    
    #以任何编码打开文件a.txt都会出现其余两个无法正常显示的问题
    f=open('a.txt','wb')
    f.write('何を見て
    '.encode('shift_jis'))
    f.write('你愁啥
    '.encode('gbk'))
    f.write('你愁啥
    '.encode('utf-8'))
    f.close()
    
    
    
    #乱码二:存文件时不乱码而读文件时乱码
    存文件时用utf-8编码,保证兼容万国,不会乱码,而读文件时选择了错误的解码方式,比如gbk,则在读阶段发生乱码,读阶段发生乱码是可以解决的,选对正确的解码方式就ok了,

    解决2点

    #1、保证不乱吗的核心法则就是,字符按照什么标准而编码的,就要按照什么标准解码,此处的标准指的就是字符编码
    
    #2、在内存中写的所有字符,一视同仁,都是unicode编码,比如我们打开编辑器,输入一个“你”,我们并不能说“你”就是一个汉字,此时它仅仅只是一个符号,该符号可能很多国家都在使用,根据我们使用的输入法不同这个字的样式可能也不太一样。只有在我们往硬盘保存或者基于网络传输时,才能确定”你“到底是一个汉字,还是一个日本字,这就是unicode转换成其他编码格式的过程了
  • 相关阅读:
    js循环遍历弹框,先弹出第一个之后逐步弹出第二个。。
    js获取字符串的字节长度
    tomcat启动报错:Address already in use: JVM_Bind
    自整理的jquery.Validate验证表达式
    jerichotab 初始化页面显示tab页中的第一个
    POST提交大量数据,导致后面数据丢失
    IDEA启动时自动报Plugin Error错误
    apiCloud检出代码出现以下图示错误:
    javascript的一些在IE下不支持的函数小结
    The Nature of Recognition
  • 原文地址:https://www.cnblogs.com/hanbowen/p/9614136.html
Copyright © 2011-2022 走看看