Unity密码输入框含不可见异常字符致登录验证失败求助
问题:Unity登录页面密码验证失败,输入框存在不可见异常字符
- 环境:基于PHP+Unity C#搭建游戏登录页面,数据库连接正常,核心功能可用
- 现象:密码正确但始终提示「密码无效」,使用
password_verify+password_hash验证失败;尝试SQL存储明文密码仍报错 - 排查结果:
- PHP查询逻辑无问题
- Unity端密码输入框内容在发送至PHP前,存在无法复制、普通去空格函数无法识别的不可见异常字符;代码中直接写死密码则验证正常,用户名输入框无此问题
- 尝试新建/复制用户名输入框仍无法解决
相关C#代码片段
public class ButtonVerify : MonoBehaviour { public Button SubmitButton; public TMP_Text username; public TMP_Text password; // Start is called before the first frame update void Start() { Button btn = SubmitButton.GetComponent<Button>(); btn.onClick.AddListener(TaskOnClick); } void TaskOnClick() { StartCoroutine(Login(username.text.ToString(), password.text.ToString())); } IEnumerator Login(string user_email, string user_pass) { WWWForm form = new WWWForm(); form.AddField("loginEmail", user_email); form.AddField("loginPassword", user_pass); using (UnityWebRequest www = UnityWebRequest.Post("imagine_theres_url",form)) { yield return www.SendWebRequest(); if(www.isNetworkError || www.isHttpError) { Debug.Log(www.error); } else { Debug.Log(www.downloadHandler.text); } } }
解决方案建议
过滤所有不可见控制字符:用正则表达式移除密码中的非打印字符,替换后再提交请求,需引入
using System.Text.RegularExpressions;string cleanedPassword = Regex.Replace(user_pass, @"[\p{Cc}\p{Cf}]", ""); form.AddField("loginPassword", cleanedPassword);检查输入框配置:
- 确认TMP输入框的
Content Type设为「Password」,关闭额外格式转换选项 - 检查
Character Validation规则,避免自动插入特殊字符
- 确认TMP输入框的
精准定位异常字符:打印密码每个字符的ASCII码,明确异常字符类型后针对性处理
foreach (char c in user_pass) { Debug.Log($"字符: '{c}' | ASCII码: {(int)c}"); }
内容的提问来源于stack exchange,提问作者ALQAWSI
相关产品推荐
相关产品推荐

