unicode

PHP处理中文真是累啊

你。 提交于 2020-02-20 19:23:45
折腾了一天的时间,才弄出点眉目来。 做AJAX应用或Flash应用,提交中文内容到后台,涉及到编码解码(encode、decode)及编码格式的转换。 网上的PHP端escape unescape函数建议不要用,它把中英文混合时的英文过滤掉了,我是莫名其妙了N久啊,建议用unicode_urldecode这个。 再就是编码格式的转换,这主要涉及数据的存储和客户端返回,用iconv就搞定,这个函数似乎是从C++中借鉴来的。 function unicode_urldecode($url) { preg_match_all('/%u([[:alnum:]]{4})/', $url, $a); foreach ($a[1] as $uniord) { $dec = hexdec($uniord); $utf = ''; if ($dec < 128) { $utf = chr($dec); } else if ($dec < 2048) { $utf = chr(192 + (($dec - ($dec % 64)) / 64)); $utf .= chr(128 + ($dec % 64)); } else { $utf = chr(224 + (($dec - ($dec % 4096)) / 4096)); $utf .= chr(128 + ((($dec % 4096) - (

varchar和Nvarchar区别

社会主义新天地 提交于 2020-02-19 04:07:18
Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示 如果还为了这个纠结,就直接看看后面的解说,做决定吧。 一般如果用到中文或者其它特殊字符,我就会使用n开头的类型,否则的话直接使用var开头的。 sql server中的varchar和Nvarchar有什么区别? 答: varchar(n) 长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。 nvarchar(n) 包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。 两字段分别有字段值:我和coffee 那么varchar字段占2×2+6=10个字节的存储空间,而nvarchar字段占8×2=16个字节的存储空间。 如字段值只是英文可选择varchar,而字段值存在较多的双字节(中文、韩文等)字符时用nvarchar char varchar nvarchar区别 联机帮助上的: 类型 长度 使用说明 长度说明 char(n) 定长 索引效率高 程序里面使用trim去除多余的空白 n 必须是一个介于 1 和 8,000 之间的数值,存储大小为 n 个字节

python字符串编码

浪尽此生 提交于 2020-02-18 07:03:15
python 默认编码   python 2.x 默认的字符编码是 ASCII ,默认的文件编码也是 ASCII 。   python 3.x 默认的字符编码是 unicode ,默认的文件编码是 utf-8 。 中文乱码 问题   无论以什么编码在内存里显示字符,存到硬盘上都是 二 进制,所以编码不对,程序就会出错。   常见编码有 ascii 编码(美国), GBK 编码(中国), shift_JIS 编码(日本 ), unicode (统一编码)等。   需 要注意的是,存到硬盘上时是以何种编码存的,再从硬盘上读出来时,就必须以何种编码读,要不然就 会出现乱码问题 。   常见的编码错误的原因有 如下,出现乱码时,按照编码之前的关系,挨个排错就能解决问题。      python 解释器的默认编码 ;      Terminal 使用的编码 ;      python 源文件文件编码 ;     操作系统的语言设置 。   Python 支持中文的编码: utf-8 、 gbk 和 gb2312 。 uft-8 为 国际通用 , 常用有数据库、编写代码 。 gbk 如 windows 的 cmd 使用 。 编码转换   如果想要中国的软件可以正常的在美国人的电脑上实现,有下面两种方法:    让美国人的电脑都装上 gbk 编码    让你的软件编码以 utf-8 编码   

python字符编码-文件操作

浪尽此生 提交于 2020-02-17 23:25:49
字符编码 字符编码历史及发展 为什么有字符编码 ''' 原因:人们想要将数据存入计算机 计算机的能存储的信息都是二进制的数据 内存是基于电工作的,而电信号只有高低频两种,就用01来表示高低电频,所以计算机里存储的数据都是0101这样的二进制数据 ''' 各种编码表/标准 的由来 """ 基于上述原因与情况 人们输入的都是我们自己能看懂的语言、字符, 而计算机里存储的却是二进制数据,这样计算机不能读懂了 所以在保存数据的时候有一个转换过程,要有一个对应关系将我们输入的字符转换成计算机能够存储的二进制数据 人输入的字符 >> 对应关系转换(字符编码表)>> 二进制数据 A 0100 0001 B 0100 0010 后来美国发明了ASCII码表,用八位二进制来表示一个英文字符 其实所有的英文字符 + 符合,最多也就在125位左右,用七位二进制就够了,采用八进制是给其他语言做了预留 """  补充: ''' 八位二进制也叫 8bit ---> 0000 0000 常见单位与转换: 8bit = 1Bytes 1024Bytes = 1KB 1024KB = 1MB 1024MB = 1GB 1024GB = 1TB 1024TB = 1PB ''' 各国各类编码的出现 """ 看到美国人有字符编码了,我们中国人也要用计算机,但ASCII码又没有中文的对应关系,于是乎就有国人发明了国标码

Python自动化开发课堂笔记【Day03】 - Python基础(字符编码使用,文件处理,函数)

假装没事ソ 提交于 2020-02-17 18:26:01
字符编码使用 1. 文本编辑器如何存取文件 文本编辑器相当一个运行在内存中的进程,所以文件内容在编辑未存储时都是在内存中的,尚未存储在硬盘之中,在没有保存之前,所编辑的任何文本都只是一堆字符,没有任何逻辑上 的意义,当存储文件的时候需要以一定的编码格式存储于硬盘之中,当进行文件读取的时候也需要以同样的编码格式进行读取到内存之中进行操作,如果存储文件的编码和读取文件的编 码不一致则会引起读取过程中的乱码导致文件操作失败。     P.S. --> Python解释器执行py文件的原理。          Step1. Python启动解释器(相当于文本编辑器)          Step2. 解释器从硬盘上将目标文件加载到内存中          Step3. 解释器执行代码得到结果(Python解释去具有文件读取和代码执行功能) 2. 字符编码的使用 --> 文件一什么编码方式保存的,就以什么编码方式打开 1. 在内存中文本是以Unicode二进制形式存在的 2. 保存文件时以文本编辑器指定的编码(比如UTF-8)encode后保存的硬盘中 3. 读取文件时文本编辑器同样需要以相同的编码格式将文件从硬盘decode后读取到内存中 4. 被读取到内存中的文件重新以Unicode二进制形式存在进行编辑 3. py程序的执行 -*- coding:utf-8 -*- 1.

Code::Blocks,wxWidgets,wxSmith 支持 gui 设计器了?

此生再无相见时 提交于 2020-02-17 08:37:31
Code::Blocks,wxWidgets,wxSmith 支持 gui 设计器了? 1.下载 Code::Blocks 含 gcc 版本的,目前 10.05 版本自带 wxSmith 设计器了. 2.下载 wxWidgets ,目前 2.8.12 有安装版本.但是仍然要编译!!! 无语加无语,进入 C:\wxWidgets-2.8.12\build\msw 编译 " echo 编译发行版本 mingw32-make -f makefile.gcc BUILD=release SHARED=1 MONOLITHIC=0 UNICODE=1 echo 编译调试版本 mingw32-make -f makefile.gcc BUILD=debug SHARED=1 MONOLITHIC=0 UNICODE=1 echo --------------------------------------------------------------------- echo 编译结束 pause 红色的是Unicode选项,如果你不需要Unicode的话可以把它设成0 " 其实不编译也是可以在 cb 中使用了的,只不过是链接时出错罢了.哈哈. 编译一个 wx 的例子可能出的错误如下: 1. error "wxUSE_DYNLIB_CLASS must be defined."

ORACLE字符集基础知识

拥有回忆 提交于 2020-02-16 21:20:30
ORACLE字符集基础知识 https://www.cnblogs.com/kerrycode/p/3749085.html 概念描叙 ORACLE数据库有国家字符集(national character set)与数据库字符集(database character set)之分。两者都是在创建数据库时需要设置的。国家字符集主要是用于NCHAR、NVARCHAR、NCLOB类型的字段数据,而数据库字符集使用很广泛,它用于:CHAR、VARCHAR、CLOB、LONG类型的字段数据; ORACLE的字符集名字一般由以下部分组成:语言或区域、表示一个字符的比特位数、标准字符集名称(可选项,S或C,表示服务器或客户端)。ORACLE字符集UTF8与UTFE不符合此规定,其它基本都是这种格式。NLS_LANG=<Language>_<Territory>.<Clients Characterset> set nls_lang=AMERICAN_AMERICA.UTF8 set nls_lang=SIMPLIFIED CHINESE_AMERICA.UTF8 NLS( National Language Support)国家语言支持。NLS是数据库的一个非常强大的特性,它控制着数据的许多方面:比如数据如何存储,一般来说它控制着以下两个方面: 文本数据持久存储在磁盘上时如何编码

9.SMBMS超市订单管理系统

倖福魔咒の 提交于 2020-02-16 01:19:09
本文转载: https://blog.csdn.net/clisks/article/details/101362850 SMBMS项目 一.准备工作 1.基本架构 2.在数据库中创建对应的表 对应数据库代码如下: CREATE DATABASE `smbms`; USE `smbms`; DROP TABLE IF EXISTS `smbms_address`; CREATE TABLE `smbms_address` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `contact` VARCHAR(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '联系人姓名', `addressDesc` VARCHAR(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '收货地址明细', `postCode` VARCHAR(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '邮编', `tel` VARCHAR(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '联系人电话', `createdBy` BIGINT(20)

深入理解python(三)python字符编码和字符串处理

大城市里の小女人 提交于 2020-02-15 18:47:56
说是有选择和循环分支,,也实在没有什么比较大的坑要注意的,所以就直接进入比较令人困扰的地方 unicode和字符串 这个地方是一直以来我比较头痛的地方,因为坑比较多而且python3和python2在编码和解码方面有着很大的差异,所以我尽量按照自己的理解写一遍,如果有谬误望不吝赐教。 先安利一个资料 https://docs.python.org/2/library/re.html 这里讲解的比较详尽 先来谈谈对编码的理解吧 首先我们要明析两个东西 1.unicode 2.编码方式 这里借一篇文章中的一段话来解释,原文讲的很清晰,建议大家去看一看: https://pycoders-weekly-chinese.readthedocs.io/en/latest/issue5/unipain.html 我们从 Unicode 基本知识开始。 事实之一:计算机中的一切均为 bytes(字节)。硬盘中的文件为一系列的 byte 组成,网络中传输的只有 byte。所有的信息,在你写的程序中进进出出的,均由 byte 组成。 孤立的 byte 是毫无意义的,所以我们来赋予它们含义。 为了表示各种文字,我们有大约 50 年的时间都在用 ASCII 码。每一个 byte 被赋予 95 种符号的一种,所以,当我给你发送 byte 值为 65 的时候,你知道我想表达一个大写的 A。 ISO

Unicode character Visual C++

≯℡__Kan透↙ 提交于 2020-02-15 06:40:47
问题 I'm trying to make my program work with unicode characters. I'm using Visual Studio 2010 on a Windows 7 x32 machine. What I want to print is the queen symbol ("\ul2655") and it just doesn't work. I've set my solution to use unicode. This is my sample code: #include <iostream> using namespace std; int main() { SetConsoleOutputCP(CP_UTF8); wcout << L"\u2655"; return 0; } Also, I've tried many other suggestions, but nothing worked. (eg. change the cmd font, apply chcp 65001, which is the same as