如何一键把你的Unity脚本从GB2312编码格式改成UTF8编码格式

这篇具有很好参考价值的文章主要介绍了如何一键把你的Unity脚本从GB2312编码格式改成UTF8编码格式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、GB2312和UTF8简介

  • GB2312(全称:中国国家标准GB2312-80字符集)和UTF-8(全称:Unicode Transformation Format 8-bit)是两种常见的字符编码方案。它们分别用于对文本进行编码,以在计算机系统和文件中存储和表示字符。

  • GB2312:
    GB2312是一个用于简化中文字符表示的字符编码,是中国大陆的第一个汉字编码标准。GB2312于1980年代发布,其中“GB”表示“国标”,即中国国家标准。GB2312涵盖了约7,000个简体中文字符、部分日文假名(平假名和片假名)、希腊字符、俄文字母、数学符号等。GB2312采用双字节(即每个字符占用两个字节,位数为16位)编码方案,支持已编码字符的互换。

  • UTF-8:
    UTF-8是对Unicode字符集进行编码的一种可变宽度编码方案。Unicode是一个国际标准,覆盖世界上几乎所有的字符,包括各种文字、符号等。UTF-8是其中最常用的一种方式,因为它具有良好的兼容性,容易被许多软件和操作系统所采用。

二、GB2312的“毛病”

unity string转utf8,unity,游戏引擎,GB2312,UTF8

三、鼠标右键一键更改

(1)选中脚本,右键选择菜单

unity string转utf8,unity,游戏引擎,GB2312,UTF8

(2)执行提示

unity string转utf8,unity,游戏引擎,GB2312,UTF8

(3)检查效果

中文正常显示了
unity string转utf8,unity,游戏引擎,GB2312,UTF8

四、实现的原理

(1)写编辑器脚本

写一个编辑器脚本,给Project视图选中的物体添加一个右键菜单

[MenuItem("Assets/脚本改格式:GB2312->UTF8无BOM %g", true)]

(2)判断该文件是不是csharp文件

    /// <summary>
    /// 判断该文件是否是CSharp文件
    /// </summary>
    /// <param name="fileName"></param>
    /// <returns></returns>
    private static bool IsCSharpFile(string fileName)
    {
        // 获取文件扩展名(包括点)
        string fileExtension = Path.GetExtension(fileName);

        // 将扩展名转换为小写并与 ".cs" 进行比较
        if (fileExtension.ToLower() == ".cs")
        {
            return true;
        }

        return false;
    }

(3)更改编码格式

  /// <summary>
    /// 文件格式转码:GB2312转成UTF8
    /// 读取指定的文件,转换成UTF8(无BOM标记)格式后,回写覆盖原文件
    /// </summary>
    /// <param name="sourceFilePath">文件路径</param>
    public static void ChangeFormat(string sourceFilePath)
    {
        string fileContent = File.ReadAllText(sourceFilePath, Encoding.GetEncoding("GB2312"));
        File.WriteAllText(sourceFilePath, fileContent, Encoding.UTF8);
        Debug.Log("处理结束!");
    }

五、脚本使用

把该文件拷贝到项目中,Editor文件夹下即可
unity string转utf8,unity,游戏引擎,GB2312,UTF8文章来源地址https://www.toymoban.com/news/detail-762633.html

六、源码

using UnityEngine;
using UnityEditor;
using System.IO;
using System.Text;

public class ChangeScriptEncodingFormat
{
    // 添加一个右键菜单。
    // % 按下ctrl时显示菜单。(Windows: control, macOS: command)
    // & 按下alt时显示菜单。(Windows/Linux: alt, macOS: option)
    // _ 按下shift时显示菜单。(Windows/Linux/macOS: shift)
    [MenuItem("Assets/脚本改格式:GB2312->UTF8无BOM %g", false, 100)]
    private static void CustomMenu()
    {
        // 例如: 获取Project视图中选定的对象
        Object selectedObject = Selection.activeObject;

        if (selectedObject != null)
        {
            // 获取选定对象的相对路径
            string relativeAssetPath = AssetDatabase.GetAssetPath(selectedObject);
            // 获取项目根目录路径
            string projectPath = Path.GetDirectoryName(Application.dataPath);
            // 获取选定对象的绝对路径
            string absoluteAssetPath = Path.Combine(projectPath, relativeAssetPath);
            // 获取选定对象的文件名(包括后缀)
            string fileName = Path.GetFileName(relativeAssetPath);

            Debug.Log("执行自定义操作: " + selectedObject.name +
                      ", 相对路径: " + relativeAssetPath +
                      ", 绝对路径: " + absoluteAssetPath +
                      ", 文件名: " + fileName);

            //判断是否是CSharp文件
            if (IsCSharpFile(fileName))
            {
                Debug.Log("这是一个csharp文件");
                ChangeFormat(absoluteAssetPath);
            }
            else
            {
                Debug.Log("兄弟,这不是一个csharp文件啊~~~~~~~~~~~");
            }
        }
        else
        {
            Debug.LogWarning("没有选中任何对象.");
        }
    }

    // 如果项目视图中有选中的对象,则启用右键菜单项
    [MenuItem("Assets/脚本改格式:GB2312->UTF8无BOM %g", true)]
    private static bool ValidateCustomMenu()
    {
        return Selection.activeObject != null;
    }

    /// <summary>
    /// 判断该文件是否是CSharp文件
    /// </summary>
    /// <param name="fileName"></param>
    /// <returns></returns>
    private static bool IsCSharpFile(string fileName)
    {
        // 获取文件扩展名(包括点)
        string fileExtension = Path.GetExtension(fileName);

        // 将扩展名转换为小写并与 ".cs" 进行比较
        if (fileExtension.ToLower() == ".cs")
        {
            return true;
        }

        return false;
    }

    /// <summary>
    /// 文件格式转码:GB2312转成UTF8
    /// 读取指定的文件,转换成UTF8(无BOM标记)格式后,回写覆盖原文件
    /// </summary>
    /// <param name="sourceFilePath">文件路径</param>
    public static void ChangeFormat(string sourceFilePath)
    {
        string fileContent = File.ReadAllText(sourceFilePath, Encoding.GetEncoding("GB2312"));
        File.WriteAllText(sourceFilePath, fileContent, Encoding.UTF8);
        Debug.Log("处理结束!");
    }
}

到了这里,关于如何一键把你的Unity脚本从GB2312编码格式改成UTF8编码格式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity开发前的一些建议1_设置脚本的编码格式,设置IDE的编码格式

    乱码之后是是不可以撤回的哦。 这么做的理由,Unity右侧的 Inspector 面板看代码是UTF-8格式的。可以在 Inspector 中速览代码,且如果修改IDE,UTF-8比其他编码格式用的更多。 VS2022使用的是GB2132,这就导致使用VS2022创建的项目在Rider中打开会乱码,Rider使用的是UTF-8。 使用GB-2132编

    2024年02月11日
    浏览(54)
  • visio,word添加缺少字体,仿宋_GB2312、楷体_GB2312、方正小标宋简体等字体下载

    visio,word添加缺少字体,仿宋_GB2312、楷体_GB2312、方正小标宋简体等字体下载 2.1 visio 3.1 下载字体 http://www.downza.cn/ 微软官方给的链接好多字体没有,其他好多字体网站,就是给你看个样式,这个网站实测可以 进去以后直接搜索 然后查看,本地下载,会有一个压缩包,然后解压

    2024年02月14日
    浏览(149)
  • mac安装仿宋GB2312字体

    第一步:双击打开 仿宋_GB2312.ttf 完成字体安装 【下载链接】 百度云: 链接: https://pan.baidu.com/s/1tsyEuNTQbTt99fYQ72JlWQ?pwd=7wa5 提取码: 7wa5 CSDN: https://download.csdn.net/download/weixin_43312117/85709796 第二步:打开访达,点击应用程序,找到 word ,右键 显示包内容 ,打开 Contents 文件夹,打

    2024年02月17日
    浏览(38)
  • UTF-8、UTF-16、Unicode、GB2312、GBK、GB18030一次说清楚

    1、关于存储编码和显示编码的区别。 Unicode是显示编码,UTF-8、UTF-16、GB2312、GBK、GB18030都是存储/传输方面使用,也叫做存储编码、处理编码,你在计算机上看见的所有文字都从存储编码转成显示编码后,显示出来,当你单机保存时又从显示编码转换为存储编码存储起来。 2、

    2024年02月12日
    浏览(50)
  • Qt之GB2312\GBK字符与QString转换

    在中国国内与其它数据接口通讯时,经常会遇到GB2312GBK格式的字符,这时需要进行数据格式转换 否则只有ASCII码正常,而其它就是乱码。 在main.c文件下配置UTF-8 QString 为unicode码,转为GBK码 将GB2312/GBK字符串转化为QString

    2024年02月11日
    浏览(78)
  • 10 分钟把你的 Web 应用转为桌面端应用

    在桌面端应用上,Electron 也早已做大做强,GitHub桌面端、VSCode、Figma、Notion、飞书、剪映、得物都基于此。但最近后起之秀的 Tauri 也引人注目,它解决了 Electron 一个大的痛点—— 打包产物特别大 。 我们知道 Electron 基于谷歌内核 Chromium 构建,打包后无论应用多小,至少都得

    2023年04月21日
    浏览(33)
  • GB28181设备接入侧如何对接外部编码后音视频数据并实现预览播放

     技术背景 我们在对接GB28181设备接入模块的时候,遇到这样的技术诉求,好多开发者期望能提供编码后(H.264/H.265、AAC/PCMA)数据对接,确保外部采集设备,比如无人机类似回调过来的数据,直接通过模块,对接到GB28181平台侧,此外,还期望不支持或者内网没有外部网络权限

    2024年02月12日
    浏览(50)
  • 如何配置达梦数据库使其支持GB18030-2022中文编码字符集

    达梦版本要求,要求使用2023年4月及之后的达梦月度版版本,补丁版、临时版等不可以。 正确安装windows操作系统,windows10以下的版本未做过测试,可能系统不支持导致各种显示错误,建议用windows10及以上版本,本人亲测过window10和windows11支持. 安装一个字体覆盖全的字库,w

    2024年02月09日
    浏览(66)
  • [MySQL]数据库原理2,Server,DataBase,Connection,latin1、UTF-8,gb2312,Encoding,Default Collation——喵喵期末不挂科

    希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重要! 目录 前言 认识字符集和校对原则 MySQL 5.5支持的字符集和校对原则 常用字符集和校对原则 确定字符集和校对原

    2024年02月04日
    浏览(45)
  • 把你的 Python 技能从 “Hello World“ 升级到 “万能钥匙“:掌握 Python 的输出、输入、数据类型转换和运算符!

    这篇文章我将为大家分享 python 的输出、输入、数据类型的转换和运算符 相关的知识。如果大家也想跟着博主一起学习 python ,欢迎订阅专栏哦python学习😊 我们都知道,要想知道程序的运行结果,就需要将结果给打印到屏幕上,那么 python 是怎样将程序输出到屏幕上的呢?这

    2024年02月11日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包