Unity WWW wwwform 資料庫亂碼
資料庫編碼是 GBK
unity 程式碼大概就是這樣 上傳一個字串 123456 如果是中文就會亂碼 單獨對字串進行轉碼怎麼轉都會亂碼
WWWForm wwwform = new WWWForm(); wwwform.AddField("myform_account", "123456"); WWW www = new WWW("http://registerB.php", wwwform);
原因
看unity原始碼知道新增欄位時會預設轉碼 UTF8所以只要在wwwform()中指定編碼就好如看一個函式一定要看完它所有的過載
wwwform.AddField("myform_provice", "四川", Encoding.GetEncoding(936));
Encoding.GetEncoding(936)代表GBK
//unity原始碼 // Add a simple field to the form. public void AddField(string fieldName, string value) { AddField(fieldName, value, Encoding.UTF8); } // Add a simple field to the form. public void AddField(string fieldName, string value, Encoding e) { fieldNames.Add(fieldName); fileNames.Add(null); formData.Add(e.GetBytes(value)); types.Add("text/plain; charset=\"" + e.WebName + "\""); } // Adds a simple field to the form. public void AddField(string fieldName, int i) { AddField(fieldName, i.ToString()); }
(Unity引擎和編輯器原始碼的C#部分)ofollow,noindex">https://github.com/Unity-Technologies/UnityCsReference
如果打包il2cpp 有可能會出現不支援936 編碼
將I18N.DLL 和 I18N.CJK.DLL 從Unity安裝目錄(Editor\Data\Mono\lib\mono\unity拷貝到Assets目錄下重新打包