首页 > 其他分享 >常见中文乱码类型及其转换脚本

常见中文乱码类型及其转换脚本

时间:2024-05-08 13:55:21浏览次数:16  
标签:脚本 中文 UTF filePath iconv fileName 乱码 fileNewName

for f in "$@"
do
    if [[ -f $f ]]; then
        fileName=$(basename ${f})
        filePath=$(dirname ${f})
        iconv -f GB18030 -t UTF-8 $f > ${filePath}/.${fileName}.tmp
        mv ${filePath}/.${fileName}.tmp $f
    fi
done

for f in "$@"
do
    fileName=$(basename ${f})
    filePath=$(dirname ${f})

    # 两种乱码类型 GBK、UTF-8
    # { fileNewName=$(echo $fileName | iconv -f UTF-8-Mac -t latin1 | iconv -f gbk)
    # } || 
    { fileNewName=$(echo $fileName | iconv -f UTF-8-Mac -t latin1)
    }

    # 文件名正常或乱码类型不属上述两种时,新文件名为空,则跳过
    if [ -n "$fileNewName" ]; then
        # 避免文件重复:如果已存在修复后的文件名,则在新文件名后加上随机字符串。
        if [ -e ${filePath}/$fileNewName ]; then
            mv "$f" "${filePath}/${fileNewName}-${RANDOM}"
        else
            mv "$f" "${filePath}/${fileNewName}"
        fi
    fi
done

%E9

准确的来说这不算乱码,这是经过 URL 编码之后的中文字符串。我们只要把它们解码就可以了。

alias urldecode='python3 -c "import sys, urllib.parse; print(urllib.parse.unquote_plus(sys.argv[1]))"'

for f in "$@"
do
    newName=$(urldecode "$f")
    mv "$f" "$newName"
done

标签:脚本,中文,UTF,filePath,iconv,fileName,乱码,fileNewName
From: https://www.cnblogs.com/Undefined443/p/18179518

相关文章

  • 【攻防技术系列+Python】-- 将Python脚本转化为exe文件
    将Python脚本转化为exe文件到目前为止,我们已经介绍了一个远程控制程序所有常用功能的实现、但是实现的脚本在执行时需要Python环境和模块文件的支持,而目标设备上往往不具备这种条件。如果将使用Python编写的远程控制程序变成在Windows中可以执行的exe文件,就可以解决这个问题......
  • 界面组件DevExpress Reporting中文教程 - 如何按条件显示页面水印?
    DevExpressReporting是.NETFramework下功能完善的报表平台,它附带了易于使用的VisualStudio报表设计器和丰富的报表控件集,包括数据透视表、图表,因此您可以构建无与伦比、信息清晰的报表。从防止未经授权的使用到建立所有权和真实性,文本和图像水印可以作为数字指纹。在最近的更......
  • Linux脚本——打印口算题
    #!/bin/bashfunctionprint_random(){#forkin{1..10};#do#echo-e"$k\t$RANDOM"#donemin=$1max=$(($2-$min+1))num=$(date+%s%N)echo$(($num%$max+$min))#if[$?];then#return0......
  • Kubernetes脚本——检查K8S组件/服务/配置/POD
    #!/bin/bash#echo"运维账号是否有执行常用kubectl运维命令的权限,期望结果:输出/apps/bin/kubelet-----------------------------------------">k8s_check_result.txt#ansible-i./hostsk8s-mshell-a"foriin\`sudo-l\`;doecho\$i|grep-Eikubectl;done"&......
  • Kubernetes脚本——K8s日志检查
    #!/bin/bashecho"docker日志采用建议的syslog收集检查,期望结果:1---------------------------------------------------------------------">log_check_result.txtansible-i./hostsall-mshell-a'sudofind/apps/logs/docker/-namedockerd.log|wc-l'&......
  • Mysql脚本——备份客户自建数据库
    #!/bin/bashDATE=$(date+%F_%H-%M-%S)HOST=127.0.0.1USER=rootPASS=Linux@123PORT=3306BACKUP_DIR=./db_backup#删选客户自建数据库(排除系统库)DB_LIST=$(mysql-u$USER-p$PASS-h$HOST-P$PORT-s-e"showdatabases;"2>/dev/null|egrep-v"Database|......
  • Kubernetes脚本——检查K8s基础信息
    #!/bin/sh#version#node,master,slave#arch#kernelversion#dockerversion#image#cpu,memandusage#pod,podlimit#service,nodeport,lb#deploy,statefulset,deamonset#cm,secret#namespaces#set-xecho_left(){if["$2&q......
  • Linux脚本——for循环和array数组
    #!/bin/shNodeName=(k8s-master-1k8s-master-2k8s-master-3k8s-node-1k8s-node-2k8s-node-3k8s-node-4k8s-node-5)ipv4=(100.190.110.55100.190.110.56100.190.110.57100.190.110.70100.190.110.71......
  • 中文语料库 没有类似https://www.english-corpora.org/里的 A/B compare的好用的
    BCC一旦用~,统计,就查不全CCL有个“搭配查询”但是很不好用,必须指明词性和词长/距离,coca里任意1-4距离,词性也是任意 搭配查询,用于查询(对比)不同动词前后的共现名词的频次差异。例如:查询表达式“刷(n,=2)|擦(n,=2)”,表示查询“刷”和“擦”后面的词长为2的名词。两个动词......
  • linux系统中文件夹和目录的区别
    *linux系统中目录和文件夹的区别:*Linux系统目录结构是一种层次化的文件系统结构,它定义了Linux操作系统中各个目录的作用和存放内容的规范。在Linux系统中,目录和文件的底层数据结构都是通过inode(索引节点)来进行管理的。inodes存储有关文件系统对象(如文件和目录)的元数据,比......