2009-09-21 75 views
2

這是非常基本的,我很抱歉問這樣一個菜鳥問題。警告:mysql_connect():訪問被拒絕用戶''''1'?

但我一收到此錯誤:

Warning: mysql_connect(): Access denied for user '‎‎u1'@'172.16.3.139' (using password: YES) in /usr/local/pem/vhosts/103503/webspace/httpdocs/eirestudio-tools/crm/add-contact.php on line 53 

用戶說â€ZA€Žu1

這是什麼意思?

下面是一個示例連接,請注意用戶,爲什麼我會得到「'z1u

mysql_connect('localhost', '‎‎user', 'pass'); 
+1

172.16.3.19是該連接的授權IP嗎?具體來說,它是服務器的IP地址嗎? – 2009-09-21 16:16:05

+1

你傳入的用戶名是什麼?它可能有助於確定已經應用了哪些編碼,並可能反過來導致它如何發生。 – DilbertDave 2009-09-21 17:59:45

+0

您是否在傳遞一個ANSI字符串,其中需要一個UNICODE字符串? – 2009-09-21 16:14:12

回答

4

why am I getting ‎‎u1?

是你期待只是「U1」?你從哪裏讀到這個字符串?

似乎發生的事情是你的配置源中有一些不可見的控制字符。具體來說,字符串''是您在獲取Unicode U + 200E LEFT-TO-RIGHT MARK並將其編碼爲UTF-8時得到的內容,然後使用Windows-1252代碼頁讀取它。

如果用戶名「U1」正在從一個文本文件中讀取可能發生這種情況:你的程序可能會讀它作爲CP1252(西方機器的默認代碼頁)字節,但是一個文本編輯器會猜它是UTF- 8並將這些字節轉換爲U + 200E字符,這些字符是您無法看到的。我不知道它們最初來自哪裏,但是您可以嘗試重新輸入/替換包含'u1'的源以擺脫它們。

+0

Bingo - 它實際上是一個下劃線。我替換了下劃線和瞧! – 2009-09-21 21:28:10

+1

下劃線?哼!我想這取決於編輯器角色的樣子,但通常兩個「左對右」標記是不可見的。 Windows-1250(中歐)是另一個代碼頁,它將使U + 200E成爲該序列;我能找到的唯一其他可能的編碼是ISO-8859-15和-16,其中它將是U + 2934箭頭指向正確值然後曲線向上:⤴⤴ – bobince 2009-09-21 23:40:08

相關問題