解析codepage和charset的含义及其应用
很多朋友可能没有意识到这个问题,但如果你的网站经常出现莫名其妙的乱码,那么就应该好好地来看看这个话题。
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是浏览器端的。两者必须匹配,才能避免乱码问题。
本文版权归作者所有,可以转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
更多博客文章,以及作者对于博客引用方面的完整声明以及合作方面的政策,请参考以下站点:陈希章的博客中心
解析codepage和charset的含义及其应用相关推荐
- bulk这个词的用法_雅思考试真题解析|雅思听力“正负含义词”的妙用
你一定会有很大的收获雅思听力"正负含义词"的妙用01 正负含义词的定义 语言表达的内容可以分为两大类:客观叙述和主观表达.以以下两个简单句为例: 1. 我是一个老师. 2. 我是一 ...
- CiteSpace文献共被引图谱含义详细解析
CiteSpace文献共被引图谱含义详细解析 回顾上几次推文: CiteSpace关键词共现图谱含义详细解析 CiteSpace关键词聚类图谱含义详细解析 CiteSpace的时区图谱含义详细解读 C ...
- html中meta的写法规范,HTML代码meta标签的charset 属性写法及用法
html代码中标签的charset 属性是用来声明文档使用的字符编码,解决文档出现乱码问题主要靠的就是它,需要注意的是,这个charset一定要写在文档最靠前的第一行标签内,不然,就可能会产生乱码了. ...
- ByteBuffer转String与解析为json对应的对象
事情是这样的,今天需要对Feign的响应进行处理,Feign在异常时返回的Body为字节缓冲,需要自己处理. ByteBuffer是个啥 原文 https://docs.oracle.com/java ...
- Cesium源码解析一(terrain文件的加载、解析与渲染全过程梳理)
快速导航(持续更新中-) Cesium源码解析一(terrain文件的加载.解析与渲染全过程梳理) Cesium源码解析二(metadataAvailability的含义) Cesium源码解析三(m ...
- [PPTX解析] 图片效果算法篇:重新着色
PPTX解析:重新着色 PPT对图片进行重新着色和设置透明颜色这两个行为,并不会对原图进行修改,而是通过将修改信息直接存入xml中,并在加载图片时通过计算将效果渲染出来.由于PPT不会存储一张经过该效 ...
- 【转】[PPTX解析] 图片 重新着色存储详解
PPTX对图片进行重新着色和设置透明颜色这两个行为,PPT并不会对原图进行修改,而是通过将修改信息直接存入xml中.也就是说不会生成一张处理过的图片,第三方应用需要获取存储信息,解析后将原图进行修改或 ...
- CiteSpace文献共被引聚类的标签究竟是来源哪里?+含义解读
CiteSpace文献共被引聚类的标签究竟是来源哪里? 回顾上几次推文: CiteSpace关键词共现图谱含义详细解析 CiteSpace关键词聚类图谱含义详细解析 CiteSpace的时区图谱含义详 ...
- Eclipse编写html——讨论charset设置
今天我们讨论html的meta元素中charset的含义. 在Eclipse的开发环境下,如果用户在编写html页面, 页面源码如下: <!DOCTYPE html> <html&g ...
最新文章
- (0049)iOS开发之数据精度处理四舍五入问题
- linux中wait与waitpid的差别
- ubuntu下eclipse中键盘失灵
- python五十二:__setattr__,__delattr__,__getattr__方法
- 【树的直径】 POJ 1985 Cow Marathon
- [LeetCode] Reverse Linked List I II - 链表翻转问题
- 计算机编程老鸟的心得,java入门123——一个老鸟java学习心得.docx
- 有了这款IDEA插件,再也不需要postman了
- PyTorch学习(7)-Seq2Seq与 Attention
- python3.7怎么设置中文_Python3.7中文字符编码问题
- YUV采样及存储格式
- Linux 命令 之 【stat】 查看文件状态。 (包括修改时间)
- 2021全国大学生数学建模竞赛E题思路
- COGS 2507 零食店
- 网络准入系统,防病毒网关,统一威胁管理,堡垒主机,漏洞扫描
- 系列课程 ElasticSearch 之第 6 篇 —— 自定义扩展分词文件、文档映射
- 百度网盘不限速下载10M/S
- Android下的特殊文件夹
- AList上传文件提示Request failed with status code 413
- ae表达式修复_AE中常见表达式错误修改解决方法