一、GB2312和UTF8簡介
-
GB2312(全稱:中國國家標準GB2312-80字符集)和UTF-8(全稱:Unicode Transformation Format 8-bit)是兩種常見的字符編碼方案。它們分別用于對文本進行編碼,以在計算機系統(tǒng)和文件中存儲和表示字符。
-
GB2312:
GB2312是一個用于簡化中文字符表示的字符編碼,是中國大陸的第一個漢字編碼標準。GB2312于1980年代發(fā)布,其中“GB”表示“國標”,即中國國家標準。GB2312涵蓋了約7,000個簡體中文字符、部分日文假名(平假名和片假名)、希臘字符、俄文字母、數(shù)學符號等。GB2312采用雙字節(jié)(即每個字符占用兩個字節(jié),位數(shù)為16位)編碼方案,支持已編碼字符的互換。 -
UTF-8:
UTF-8是對Unicode字符集進行編碼的一種可變寬度編碼方案。Unicode是一個國際標準,覆蓋世界上幾乎所有的字符,包括各種文字、符號等。UTF-8是其中最常用的一種方式,因為它具有良好的兼容性,容易被許多軟件和操作系統(tǒng)所采用。
二、GB2312的“毛病”
三、鼠標右鍵一鍵更改
(1)選中腳本,右鍵選擇菜單
(2)執(zhí)行提示
(3)檢查效果
中文正常顯示了
四、實現(xiàn)的原理
(1)寫編輯器腳本
寫一個編輯器腳本,給Project視圖選中的物體添加一個右鍵菜單文章來源:http://www.zghlxwxcb.cn/news/detail-762633.html
[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);
// 將擴展名轉(zhuǎn)換為小寫并與 ".cs" 進行比較
if (fileExtension.ToLower() == ".cs")
{
return true;
}
return false;
}
(3)更改編碼格式
/// <summary>
/// 文件格式轉(zhuǎn)碼:GB2312轉(zhuǎn)成UTF8
/// 讀取指定的文件,轉(zhuǎn)換成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("處理結(jié)束!");
}
五、腳本使用
把該文件拷貝到項目中,Editor文件夾下即可文章來源地址http://www.zghlxwxcb.cn/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("執(zhí)行自定義操作: " + 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);
// 將擴展名轉(zhuǎn)換為小寫并與 ".cs" 進行比較
if (fileExtension.ToLower() == ".cs")
{
return true;
}
return false;
}
/// <summary>
/// 文件格式轉(zhuǎn)碼:GB2312轉(zhuǎn)成UTF8
/// 讀取指定的文件,轉(zhuǎn)換成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("處理結(jié)束!");
}
}
到了這里,關(guān)于如何一鍵把你的Unity腳本從GB2312編碼格式改成UTF8編碼格式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!