很多朋友可能没有意识到这个问题,但如果你的网站经常出现莫名其妙的乱码,那么就应该好好地来看看这个话题。

codepage,中文翻译为 “内码表”或者“代码页”,它的完整介绍可以参考下面的链接

http://zh.wikipedia.org/wiki/%E4%BB%A3%E7%A0%81%E9%A1%B5

简单地说,这是程序用于对字符进行编码的一个表。代码页是服务器的事情,或者说是程序的事情。与客户端没有关系。

常见的三种codepage我们是必须知道的

  • 简体中文 : 936
  • 繁体中文 : 950
  • UTF-8 : 65001

我们以前写ASP程序的时候,通常都需要明确指定codepage的,大致下面这样的语法

<%@ codepage=936%>简体中文
<%@ codepage=950%>繁体中文
<%@ codepage=65001%>UTF-8

这样实际上是指定当前页面的字符按照特定的代码页进行编码

这些代码对于有些比较年轻的朋友来说,可能根本没有接触过。毕竟,在ASP.NET里面,你一般不需要进行设置。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    </div>
    </form>
</body>
</html>

这是一个简单的页面,我们在其中并没有看到有关代码页的设置。那么,如果没有做设置,会用什么设置呢?

答案是:ASP.NET将默认使用UTF -8 进行编码。这也是为什么现在的网页很少发生乱码的原因。

怎么看这个默认的代码页设置呢?很简单,我们通过下面的代码就可以看到

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
                Response.Write("当前的代码页设置为:"+Session.CodePage.ToString());
        }
    }
}

大家可以看到,默认的codepage是65001

与此同时,如果你不想用默认的UTF-8(我认为基本上这是不可能的),你仍然可以修改该设置

  • 直接在页面中修改

    • <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" CodePage="936"%>
  • 在代码中修改
    • Session.CodePage = 936;//这句代码修改代码页为简体中文

我们可以来测试一下为什么会发生乱码。假设,我们强制给代码页设置为950(也就是繁体中文),但是在response里面,我们又输出了简体中文字。那么该页面看起来就像下面这样

传说中的乱码,对吧?

好了,我们大致介绍了codepage的概念:简单地说,它是程序对字符进行编码的依据。

那么,什么是charset呢?

charset,中文翻译为“字符集”,这是指浏览器对收到的字符进行解码所用的字符表。浏览器一般都会自动地根据response中的元数据,选择相应的字符集。如果浏览器的字符集与服务器指定的代码页不匹配,那么很自然可能又产生乱码。

怎么看response中的charset信息?

怎么调整浏览器的字符器设置呢?虽然一般都是自动的,但仍然可以更改

所以,我们到这里就明白了,codepage是服务器端的,charset是浏览器端的。两者必须匹配,才能避免乱码问题。

本文由作者:陈希章 于 2009/6/23 11:20:26 发布在:http://www.cnblogs.com/chenxizhang/
本文版权归作者所有,可以转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
更多博客文章,以及作者对于博客引用方面的完整声明以及合作方面的政策,请参考以下站点:陈希章的博客中心

解析codepage和charset的含义及其应用相关推荐

  1. bulk这个词的用法_雅思考试真题解析|雅思听力“正负含义词”的妙用

    你一定会有很大的收获雅思听力"正负含义词"的妙用01 正负含义词的定义 语言表达的内容可以分为两大类:客观叙述和主观表达.以以下两个简单句为例: 1. 我是一个老师. 2. 我是一 ...

  2. CiteSpace文献共被引图谱含义详细解析

    CiteSpace文献共被引图谱含义详细解析 回顾上几次推文: CiteSpace关键词共现图谱含义详细解析 CiteSpace关键词聚类图谱含义详细解析 CiteSpace的时区图谱含义详细解读 C ...

  3. html中meta的写法规范,HTML代码meta标签的charset 属性写法及用法

    html代码中标签的charset 属性是用来声明文档使用的字符编码,解决文档出现乱码问题主要靠的就是它,需要注意的是,这个charset一定要写在文档最靠前的第一行标签内,不然,就可能会产生乱码了. ...

  4. ByteBuffer转String与解析为json对应的对象

    事情是这样的,今天需要对Feign的响应进行处理,Feign在异常时返回的Body为字节缓冲,需要自己处理. ByteBuffer是个啥 原文 https://docs.oracle.com/java ...

  5. Cesium源码解析一(terrain文件的加载、解析与渲染全过程梳理)

    快速导航(持续更新中-) Cesium源码解析一(terrain文件的加载.解析与渲染全过程梳理) Cesium源码解析二(metadataAvailability的含义) Cesium源码解析三(m ...

  6. [PPTX解析] 图片效果算法篇:重新着色

    PPTX解析:重新着色 PPT对图片进行重新着色和设置透明颜色这两个行为,并不会对原图进行修改,而是通过将修改信息直接存入xml中,并在加载图片时通过计算将效果渲染出来.由于PPT不会存储一张经过该效 ...

  7. 【转】[PPTX解析] 图片 重新着色存储详解

    PPTX对图片进行重新着色和设置透明颜色这两个行为,PPT并不会对原图进行修改,而是通过将修改信息直接存入xml中.也就是说不会生成一张处理过的图片,第三方应用需要获取存储信息,解析后将原图进行修改或 ...

  8. CiteSpace文献共被引聚类的标签究竟是来源哪里?+含义解读

    CiteSpace文献共被引聚类的标签究竟是来源哪里? 回顾上几次推文: CiteSpace关键词共现图谱含义详细解析 CiteSpace关键词聚类图谱含义详细解析 CiteSpace的时区图谱含义详 ...

  9. Eclipse编写html——讨论charset设置

    今天我们讨论html的meta元素中charset的含义. 在Eclipse的开发环境下,如果用户在编写html页面, 页面源码如下: <!DOCTYPE html> <html&g ...

最新文章

  1. (0049)iOS开发之数据精度处理四舍五入问题
  2. linux中wait与waitpid的差别
  3. ubuntu下eclipse中键盘失灵
  4. python五十二:__setattr__,__delattr__,__getattr__方法
  5. 【树的直径】 POJ 1985 Cow Marathon
  6. [LeetCode] Reverse Linked List I II - 链表翻转问题
  7. 计算机编程老鸟的心得,java入门123——一个老鸟java学习心得.docx
  8. 有了这款IDEA插件,再也不需要postman了
  9. PyTorch学习(7)-Seq2Seq与 Attention
  10. python3.7怎么设置中文_Python3.7中文字符编码问题
  11. YUV采样及存储格式
  12. Linux 命令 之 【stat】 查看文件状态。 (包括修改时间)
  13. 2021全国大学生数学建模竞赛E题思路
  14. COGS 2507 零食店
  15. 网络准入系统,防病毒网关,统一威胁管理,堡垒主机,漏洞扫描
  16. 系列课程 ElasticSearch 之第 6 篇 —— 自定义扩展分词文件、文档映射
  17. 百度网盘不限速下载10M/S
  18. Android下的特殊文件夹
  19. AList上传文件提示Request failed with status code 413
  20. ae表达式修复_AE中常见表达式错误修改解决方法

热门文章

  1. cv2.resize
  2. shell函数的返回值不能大于255的问题
  3. ABP入门系列(7)——分页实现
  4. 分享一下SecureCRT输出颜色和格式
  5. PG 9.4 行冻结信息的测试
  6. OracleHelper类
  7. Real World Kanban作者访谈
  8. 老牛:虚拟化让工作如此智慧
  9. eclipse启动maven项目报类找不到
  10. 如何更好的创建Java对象