shell实现字符编码转换工具分享

代码如下:

#!/bin/bash

: << mark
转码工具,支持UTF-8转GBK和GBK转UTF-8
孔令飞@2012-05-07
mark

#set -x

scode="gbk"
dcode="utf-8"

function Usage()
{
 cat << EOF
Usage: conv [OPTIONS] [DIR]
[-u] GBK to UTF-8
[-g] UTF-8 to GBK
EOF
 exit 1
}

#将当前目录下所有普通文件进行转码 GBK to UTF-8
function g2u()
{
 local dir=$1
 printf "Convering $dir ......"
 for file in $(ls $dir)
 do
  file="$dir/$file"
  if [ -f $file ];then

coding=$(file -b $file | cut -d ' ' -f1)

#进行转码
   if [ "$coding" = "ISO-8859" ];then
    local tmpfile=$(mktemp)
    Fright=$(stat -c %a $file)
    Fuser=$(stat -c %U $file)
    Fgro=$(stat -c %G $file)
    iconv -f $scode -t $dcode $file > $tmpfile || Usage
    mv $tmpfile $file &&
    chmod $Fright $file
    chown $Fuser:$Fgrp $file
   fi
  fi
 done
 printf "      done\n"
}

function u2g()
{
 local dir=$1
 printf "Convering $dir ......"
 for file in $(ls $dir)
 do
  file="$dir/$file"
  if [ -f $file ];then

coding=$(file -b $file |cut -d ' ' -f1)

#进行转码
   if [ "$coding" = "UTF-8" ];then
    local tmpfile=$(mktemp)
    Fright=$(stat -c %a $file)
    Fuser=$(stat -c %U $file)
    Fgro=$(stat -c %G $file)
    iconv -f $dcode -t $scode $file > $tmpfile || Usage
    mv $tmpfile $file &&
    chmod $Fright $file
    chown $Fuser:$Fgrp $file
   fi
  fi
 done
 printf "      done\n"
}

[ $# -ne 2 ] && Usage

while getopts ug opt
do
 case $opt in
  u) echo "Convert gbk coding to utf-8 ...."
  for dir in $(find $2 -type d)
  do
   g2u $dir
  done

g) echo "Convert utf-8 coding to gbk ...."
  for dir in $(find $2 -type d)
  do
   u2g $dir
  done

*) Usage
  exit 1

esac
done

exit 0

(0)

相关推荐

  • mysql修改数据库编码(数据库字符集)和表的字符编码的方法

    mysql将表的字符编码转换成utf-8 复制代码 代码如下: alter table tb_anniversary convert to character set utf8; 修改数据库mysql字符编码为UTF8 步骤1:查看当前的字符编码方法 复制代码 代码如下: mysql> show variables like'character%'; +--------------------------+----------------------------+ |Variable_name 

  • 基于字符集、字符编码与HTTP编码解码之万象详解

    在日常编写代码过程中,常常会碰到乱码问题,一个典型的情况是浏览网页,如果网站开发者缺少经验,就会带来这种令人头疼的问题.要了解乱码的症结,我们就得从字符集和字符编码说起,先来看看它们到底是什么: 1:字符集:是一个系统支持的所有抽象字符的集合.字符是各种文字和符号的总称,包括各国家文字.标点符号.图形符号.数字等. 2:字符编码:是一套法则,最常规的理解就是:让程序根据这个法则对应到相应的字符集中将byte[]存取为string. 现在,我们要来看看这些东西在 .NET 中对应的是什么. 一:字

  • Java反转字符串和相关字符编码的问题解决

    复制代码 代码如下: public String reverse(char[] value){       for (int i = (value.length - 1) >> 1; i >= 0; i--){           char temp = value[i];           value[i] = value[value.length - 1 - i];           value[value.length - 1 - i] = temp;       }     

  • 微信开发中mysql字符编码问题

    问题描述:获取code以后不能用ajax请求微信api数据.这个和ajax跨域访问有关系得到用户信息之后存到mysql,发现中文全部变成了??(乱码) 通过上网查阅了相关资料,判断问题根本原因是字符编码问题. 解决方案: 修改配置文件/etc/mysql/my.conf 在[mysql]下 复制代码 代码如下: default-character-set=utf8 在[mysqld]下 复制代码 代码如下: character-set-server=utf8 重启就失败 复制代码 代码如下: j

  • php字符编码转换之gb2312转为utf8

    在php中字符编码转换我们一般会用到iconv与mb_convert_encoding进行操作,但是mb_convert_encoding在转换性能上比iconv要差很多哦.string iconv ( string in_charset, string out_charset, string str ) 注意:第二个参数,除了可以指定要转化到的编码以外,还可以增加两个后缀://TRANSLIT 和 //IGNORE,其中 //TRANSLIT 会自动将不能直接转化的字符变成一个或多个近似的字符

  • Java字符编码解码的实现详解

     字符集基础: Character set(字符集)          字符的集合,也就是,带有特殊语义的符号.字母"A"是一个字符."%"也是一个字符.没有内在数字价值,与 ASC II ,Unicode,甚至是电脑也没有任何的直接联系.在电脑产生前的很长一段时间内,符号就已经存在了. Coded character set(编码字符集)          一个数值赋给一个字符的集合.把代码赋值给字符,这样它们就可以用特定的字符编码集表达数字的结果.其他的编码字符

  • shell实现字符编码转换工具分享

    复制代码 代码如下: #!/bin/bash : << mark转码工具,支持UTF-8转GBK和GBK转UTF-8孔令飞@2012-05-07mark #set -x scode="gbk"dcode="utf-8" function Usage(){ cat << EOFUsage: conv [OPTIONS] [DIR][-u] GBK to UTF-8[-g] UTF-8 to GBKEOF exit 1} #将当前目录下所有普通文

  • php中的字符编码转换函数用法示例

    本文实例讲述了php中的字符编码转换函数的用法,分享给大家供大家参考.具体实现方法如下: 一般来说,在网页程序中,尤其是涉及到数据库的读出过程中,往往最恼火的就是字符编码的问题,php4.0.6以上的版本提供了mb_convert_encoding 可以方便的转换编码. 具体如下: 复制代码 代码如下: <?php /* Convert internal character encoding to SJIS */ $str = mb_convert_encoding($str, "SJIS

  • VBS实现GB2312,UTF-8,Unicode,BIG5编码转换工具

    演示 echo "ABCDE &!@#$ ^<>() %% abcde 测试!"> "处理前.txt" GB2Ue.vbs "处理前.txt" "处理后.txt" Ue2U8.vbs "处理后.txt" U82GB.vbs "处理后.txt" GB2U8.vbs "处理后.txt" U82Ue.vbs "处理后.txt"

  • MySQL优化案例之隐式字符编码转换

    目录 索性失效前提 一个真实的案例 优化前原始sql分析 优化初步处理 初步优化无效分析 第二次优化处理 第三次优化 结论 索性失效前提 MySQL中我们知道有: 1.如果对索引字段做函数操作,可能会破坏索引值的有序性,因此优化器就决定放弃走树搜索功能. 2.隐式类型转换也会导致同样的放弃走树搜索. 因为类型转换等价于在条件字段上使用了函数比如: /*假设tradeid字段有索引,且为varchar类型*/ mysql> select * from tradelog where tradeid=

  • PHP iconv()函数字符编码转换的问题讲解

    在php中iconv函数库能够完成各种字符集间的转换,是php编程中不可缺少的基础函数库:但有时候iconv对于部分数据转码会无缘无故的少一些.比如在转换字符"-"到gb2312时会出错. 下面一起慢慢看一下这个函数的用法. 最简单的应用,把gb2312置换成utf-8: $text=iconv("GB2312","UTF-8",$text); 在用$text=iconv("UTF-8","GB2312",

  • 浅谈JavaScript中的字符编码转换问题

    要获得字符的Unicode编码,可以使用string.charCodeAt(index)方法,其定义为: strObj.charCodeAt(index) index为指定字符在strObj对象中的位置(基于0的索引),返回值为0与65535之间的16位整数.例如: var strObj = "ABCDEFG"; var code = strObj.charCodeAt(2); // Unicode value of character 'C' is 67 如果index指定的索引处没

  • JS实现的Unicode编码转换操作示例

    本文实例讲述了JS实现的Unicode编码转换操作.分享给大家供大家参考,具体如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Unicode编码转换</title> </head> <body> <script> /* *js Unicode编码转换 */ va

  • PHP下编码转换函数mb_convert_encoding与iconv的使用说明

    不过英文一般不会存在编码问题,只有中文数据才会有这个问题.比如你用Zend Studio或Editplus写程序时,用的是gbk编码,如果数据需要入数据库,而数据库的编码为utf8时,这时就要把数据进行编码转换,不然进到数据库就会变成乱码. mb_convert_encoding的用法见官方: http://cn.php.net/manual/zh/function.mb-convert-encoding.php 做一个GBK To UTF-8 复制代码 代码如下: <?php header(&qu

  • 再谈Python中的字符串与字符编码(推荐)

    本节内容: 1.前言 2.相关概念 3.Python中的默认编码 4.Python2与Python3中对字符串的支持 5.字符编码转换 一.前言 Python中的字符编码是个老生常谈的话题,同行们都写过很多这方面的文章.有的人云亦云,也有的写得很深入.近日看到某知名培训机构的教学视频中再次谈及此问题,讲解的还是不尽人意,所以才想写这篇文字.一方面,梳理一下相关知识,另一方面,希望给其他人些许帮助. Python2的 默认编码 是ASCII,不能识别中文字符,需要显式指定字符编码:Python3的

随机推荐