27.解决Unity中文乱码
机智的小草yns
编辑于 2023年11月25日 21:31
收录于文集
共30篇

Unity+Vs写代码中, 经常会有中文乱码的情况

1.从源头上解决

创建代码文件时, 主动设置为UTF-8编码

代码块
JavaScript
自动换行
复制代码
//创建UTF-8代码
[MenuItem("Assets/Create/C# Script UTF-8",false,20,secondaryPriority =10)]
static void CreateCodeText()
{
  // 获取选中的文件夹或文件的路径
  string selectedPath = AssetDatabase.GetAssetPath(Selection.activeObject);

  string codeText = "using UnityEngine;\r\n\r\npublic class NewBehaviourScript1 : MonoBehaviour\r\n{\r\n\r\n}\r\n";

  File.WriteAllText(selectedPath + "/NewBehaviourScript1.cs", codeText, System.Text.Encoding.UTF8);

  // 刷新Unity资源窗口
  AssetDatabase.Refresh();
}
复制成功

2. 转换已乱码文件

在Unity中选中代码文件, 右键选项转换

Windows版的默认文件编码是Ansi936页, 这个可通过Notepad++查看

代码块
JavaScript
自动换行
复制代码
[MenuItem("Assets/Check/编码Ansi-> UTF-8")]
private static void ReadAnsiText()
{
    // 获取当前在Unity编辑器中选中的对象
    UnityEngine.Object selectedObject = Selection.activeObject;

    if (selectedObject != null && selectedObject is TextAsset)
    {
        TextAsset textAsset = selectedObject as TextAsset;

        string assetPath = AssetDatabase.GetAssetPath(textAsset);

        Encoding encoding = Encoding.GetEncoding(936);

        string text = File.ReadAllText(assetPath, encoding);

        System.IO.File.WriteAllText(assetPath, text, Encoding.UTF8);

        AssetDatabase.Refresh();
    }
}
复制成功

使用图


小草的工具集(挖坑中...)

https://github.com/smartgrass/XiaoCaoKit