帶有特殊字元的 MySQLDump 問題
程式碼:使用測試;
CREATE TABLE Test_user(使用者名 VARCHAR(15),路徑 VARCHAR(100));
INSERT INTO Test_user VALUES(’new1’,‘C:\newfolder\one.xlsx’); INSERT INTO Test_user VALUES(’new1’,‘C:/newfolder/one.xlsx’);
我使用 MySQLDump 創建了一個 .sql 文件,其中包含內容
文件名:Table1.sql
如果存在則刪除表
test_user
;/*!40101 SET @saved_cs_client = @@character_set_client /; / !40101 SET character_set_client = utf8 /; 創建表test_user
(Username
varchar(15)預設空值,path
varchar(100)預設空值)引擎=InnoDB預設字元集=latin1;/ !40101 SET character_set_client = @saved_cs_client */;鎖定表
test_user
寫入;/!40000 更改表test_user
禁用鍵/; 插入test_user
值 (’new1’,‘C:\newfolderone.xlsx’),(’new1’,‘C:/newfolder/one.xlsx’); /* !40000 ALTER TABLEtest_user
啟用鍵 */; 解鎖表;在上面的 Table1.sql 文件 (’new1’,‘C:\newfolderone.xlsx’) 反斜杠之前 one.xlsx 沒有顯示,在嘗試執行這個文件時,我得到這樣的輸出
new1 C:ewfolderone.xlsx new2 C:/newfolder/one.xlsx
在根本不顯示 \ 的地方,建議我如何解決它以及像這個反斜杠這樣的特殊字元會產生這種錯誤。
提前致謝..
您應該閱讀MySQL 中的字元串文字。
在那裡您將了解到反斜杠字元用於轉義一些特殊字元串,並且要在字元串中使用文字反斜杠(如在 Windows 路徑名中),您必須將它們加倍:
INSERT INTO test_user VALUES ('new1','C:\\newfolderone.xlsx');
需要特殊處理的字元的完整列表在上面的連結中。
但是,最好讓中間語言來處理這些問題。例如,在 PHP 中你會呼叫
PDO::quote
; 其他平台和語言提供類似的設施。