中文

php函数substr、mb_substr、mb_strcut截取中文比较

旧巷老猫 提交于 2019-12-06 19:00:46
一、函数说明 substr、mb_substr、mb_strcut这三个函数都用来截取字符串,所不同的是:substr是最简单的截取,无法适应中文;mb_substr是按字来切分字符串,而mb_strcut是按字节来切分字符串,截取中文都不会产生半个字符的现象。 这三个函数的前三个参数完全一致,即: 第一个参数是操作对象 第二个参数是截取的起始位置 第三个参数是截取的数量 mb_substr和mb_strcut还有第四个参数:第四个参数可以根据不同的字符集进行设置 <?php //对待一个UTF8的中文字符是3个长度 //对待一个gbk的中文字符是2个长度 header( "content-Type:text/html;charset=utf-8" ); //设置内部编码 mb_internal_encoding( 'UTF-8' ); //测试 $cn_str = "钓鱼岛是中国的hehe" ; $en_str = "this is just a test" ; //使用substr echo substr ( $cn_str ,0,3). '<br/>' ; //钓 echo substr ( $en_str ,0,3). '<br/><br/>' ; //thi //使用mbsubstr() echo "mb_substr-3:" .mb_substr( $cn_str ,0

PHP中json_encode 中文解决方法

非 Y 不嫁゛ 提交于 2019-12-05 05:59:07
在 php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。 这个函数的功能是将数值转换成json数据存储格式。 <?php $arr= array ( 'Name'=>'悟空', 'Age'=>5000 ); $jsonencode= json_encode($arr); echo$jsonencode; ?> 程序运行结果如下: {"Name":null,"Age":5000} json_encode 函数中中文被编码成 null 了,Google 了一下,很简单,为了与前端紧密结合,Json 只支持utf-8 编码,我认为是前端的 Javascript 也是 utf-8 的原因。 <?php $array= array ( 'title'=>iconv('gb2312','utf-8','这里是中文标题'), 'body'=>'abcd...' ); echojson_encode($array); ?> 这个程序的运行结果为: 1{"title":"\u8fd9\u91cc\u662f\u4e2d\u6587\u6807\u9898","body":"abcd..."} 数组中所有中文在json_encode之后都不见了或者出现\u2353等。 解决方法是用urlencode()函数处理以下

Linux Mint中文字体模糊

早过忘川 提交于 2019-12-04 22:37:39
习惯了WinXP的字体,总不习惯Linux那模糊的中文,还是XP的锐利字体比较合适我。 先安装字体 SimSun(可用文泉驿的开源点阵字体WenQuanYi Bitmap Song替代) DejaVu Sans Droid Sans DejaVu Serif Droid Serif DejaVu Sans Mono Droid Sans Mono 然后Ctrl+Alt+T调出终端,输入 sudo gedit /etc/fonts/conf.d/50-user.conf 原内容如下 <?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <!-- Load per-user customization file --> <include ignore_missing="yes" prefix="xdg">fontconfig/conf.d</include> <include ignore_missing="yes" prefix="xdg">fontconfig/fonts.conf</include> <!-- the following elements will be removed in the future --> <include ignore_missing="yes"

Oracle 判断汉字 [\u4e00-\u9fa5]

给你一囗甜甜゛ 提交于 2019-12-04 17:32:25
最近由于单位提了一个需求,要判断提供的用户名称里不有全角字符,至少有两个汉字。找了半天,想通过正则表达式来解决,但测试了好久才发现,Oracle的正则函数REGEXP_LIKE 不支持“\un 匹配 n,其中 n 是以四位十六进制数表示的 Unicode 字符”的判断,例如,\u00A9 匹配版权符号 (&copy,而标准的正则是可以支持的,所以这个办法行不通,只能过期其他办法来实现。 在网上找了半天,都没有确切的实现办法,有通过Length()和lengthb ()来判断,但不完美,所以就把自己的写法记录下来希望能有用处。 对于全角字符,ascii值的范围是\uFF00-\uFFFF,都是FF段的,所以可以通过转换成ascii 来判断,instr(asciistr(replace( '在《<23\', '\')),'\FF',1,1) > 0 就可以实现对于汉字,范围太大,只能通过函数来完成,于是写了如下函数: create or replace function get_chinese(v_name in varchar2) return integer is i int; v_count integer; v_code varchar2(10); begin v_count := 0; /** 用途: 返回字符串中汉字的个数 原理说明:

Mac 10.8 下安装Sphinx并支持生成中文PDF

徘徊边缘 提交于 2019-12-03 21:11:14
Mac 10.8 下安装Sphinx并支持生成中文PDF 最近一直在用Sphinx撰写文档,但是生成中文PDF时老是失败。今天在网上查了些资料,终于把它弄成功了。现记录如下。 需要用到的软件有: python 2.7 Sphinx 1.2 MacTex 2013 安装Sphinx $ sudo easy_install-2.7 Sphinx 安装MacTex 请到 http://www.tug.org/mactex/ 下载,或 点此 下载。安装过程就略了。 让Sphinx latex支持中文 首先使用 sphinx-quickstart 生成Sphinx项目。然后修改 conf.py 文件。将如下段: latex_elements = { # The paper size ('letterpaper' or 'a4paper'). #'papersize': 'letterpaper', # The font size ('10pt', '11pt' or '12pt'). #'pointsize': '10pt', # Additional stuff for the LaTeX preamble. #'preamble': '', } 替换成: latex_elements = { # The paper size ('letterpaper' or 'a4paper').

PL/sql导入sql文件中文乱码解决办法

牧云@^-^@ 提交于 2019-12-03 11:21:36
从别处接过来的pl/SQL导出文件XX.sql文件,用pl/sql工具中的 import 功能导入到本地库后,发现表的comment注释中文乱码,可通过以下办法解决,特记录如下: 1)进入pl/sql安装目录:我的目录是"E:\Program Files (x86)\PLSQL Developer\" 2)在目录内新建一个startplsql.bat文件,文件内容为 set ORACLE_HOME=E:\app\Again\product\11.2.0\dbhome_1 set PATH=E:\app\Again\product\11.2.0\dbhome_1 set TNS_ADMINE=E:\app\Again\product\11.2.0\dbhome_1\network\admin set NLS_LANG=AMERICAN_AMERICA.AL32UTF8 start plsqldev.exe 3 ) 打开Uedit文本编辑软件,新建一个文本,选择【视图】-【查看代码页】,选择UTF-8并保存,XX.sql文件中内容复制到该页,并另存为ZMXX.sql文件,另存弹出框,下拉选择格式为UTF-8 4)执行startplsql.bat文件,自动启动pl/sql,在执行import导入工具导入ZMXX.sql即可。 来源: oschina 链接: https://my

PHP 数据加密工具类

流过昼夜 提交于 2019-12-03 02:52:22
PHP 数据加密工具类 最近在写一个需要加密传输数据的小项目,顺便把用的加密方法封装成一个工具类,其实就是按字节位把ASCII码进行位运算 加密解密工具类 <?php /** * @date 2016-06-20 * @author sallency * 数据传输加密工具类 */ class DataSecurityTool { private $key_main = []; private $key_sub = []; public function __construct($key_main = "this is main key", $key_sub = "this is sub key") { $this->key_main = str_split($key_main); $this->key_sub = str_split($key_sub); } /** * 加密函数 * @param [type] $context [description] * @return [type] [description] */ public function opEncryption($context) { $context_bytes = str_split($context); $context_len = count($context_bytes); $cur_key_len =

使用Druid解决Oracle Thin驱动中文乱码

断了今生、忘了曾经 提交于 2019-11-30 21:44:40
1. 问题 使用Oracle Thin驱动比较麻烦的一个问题是容易出现中文乱码,且Thin驱动不像MySQL驱动那样能在链接字符串中指定编码。 2. 思路 最直接的解决方案是对所有数据库中读出的字符串进行编解码,但这么做需要编码处理所有的字符串,很麻烦。 // 编码: String newString = new String(oldstring.getBytes(clientEncoding),serverEncoding); // 解码: String newString = new String(oldstring.getBytes(serverEncoding),clientEncoding); 更好的方式是使用JDBC的代理,在通过JDBC返回和写入字符串前进行编解码操作,把所有字符串的处理收拢到一起。 3. 解决 目前能可靠使用且一直有在维护和开发的JDBC代理有@wenshao 的 Druid ,详情可点击查看,在此不多做介绍。Druid本身实现了Filter-Chain机制,能对JDBC进行灵活的扩展,并内置了一个用于进行字符编码转换的Filter。 通过Druid即可很方便的解决Oracle编码问题 ,无需重复造轮子。 使用Druid,需要同时引入Druid和数据库驱动的依赖,Maven配置如下。 <dependencies> …… <dependency>

求指教!!!Hadoop的乱码问题如何解决?

此生再无相见时 提交于 2019-11-30 14:58:39
今天本来打算写java虚拟机的学习记录的。 但是在工作室里做任务时,出现了一个乱码问题,现在也还没有很好的解决办法,所以写出来让大家交流一下,以求好办法。 我们搭建了个由5台机器的Hadoop集群,并在之前已经做过统计分析日志记录的任务。由于日志内容都是在linux服务器( 代理服务器 )上生成的,用的编码都是UTF-8,而都是英文记录、源IP、目的IP、目的地址、访问时间等信息,有固定的格式,进行分析时都没有出现过很大的困难。 但是,现在则出现了比较难解决的问题? 问题:hadoop 集群处理 GBK 文件里出现乱码. 具体描述: 我们共12G多的文本文件,这些文件都是来自门户网站,使用很简单的爬虫抓取而来。 文件采用 GBK编码格式 保存。 我们的任务过程: (1)把文件从linux中上传到hadoop集群上( 此时的文件编码格式: GBK ) (2)使用登记分词器对文件进行分析,分解的出文章中的词汇,并保存到指定的文件中。 在查看hadoop集群的输出到指定文件的内容时,发现里面全都是乱码。 这是我们之前分析日志文件时没有出现过的。 在找问题的解决办法时, Google、百度、论坛都是说 同样的原因 :Hadoop在代码中设定的Charset为UTF-8,属于硬编码。 截图如下(点击图片链接到目标地址): 我们做了一次试验,使用UTF编码的中文文件则可以完成分析、分词过程。

servlet 中文乱码问题及解决方案

我只是一个虾纸丫 提交于 2019-11-30 10:01:33
一、常识了解 1.GBK包含GB2312,即如果通过GB2312编码后可以通过GBK解码,反之可能不成立; 2.java.nio.charset.Charset.defaultCharset() 获得平台默认字符编码; 3.getBytes() 是通过平台默认字符集进行编码; 二、中文乱码出现 在学习任何一门技术时,经常会有初学者遇到中文乱码问题,比如MySQL,是因为在安装时没有设置;而在Servlet中,也会遇到中文乱码问题; 比如: OutputStream out = response.getOutputStream(); out.write(String ); 输出中文时可能会出现乱码; 比如: [java] view plain copy protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { OutputStream out = response.getOutputStream(); String data = "博客" ; out.write(data.getBytes( "UTF-8" )); } 输出乱码的问题是程序用UTF-8编码,而浏览器用GB2312解码,因此会出现乱码;