ä сохраняется как значение ä кодируется в базе данных - PullRequest
4 голосов
/ 15 февраля 2011

Я записываю переменную на странице asp:

name="ända"
response.write name

Показывает ända на странице, хорошо!

При вставке в базу данных значение, записанное в базу данных, равно ända

Страница кодируется <%Response.charset="iso-8859-1"%>

Как я могу получить это значение ända для записи в базу данных?

<%Response.charset="iso-8859-1"%>

folderName=request.querystring("foretagsnamn")

         folderName = replace(folderName, "å" , "a")
         folderName = replace(folderName, "ä" , "a")
         folderName = replace(folderName, "ö" , "o")
         folderName = replace(folderName, "Å" , "a")
         folderName = replace(folderName, "Ä" , "a")
         folderName = replace(folderName, "Ö" , "o")
         folderName = LCase(folderName)
        response.write folderName

А затем просто вставить SQL в базу данных.

sql="INSERT INTO users(folderName) VALUES('"&folderName&"');"
    conn.execute(sql)

Это база данных mySql, классический asp.

Строка запроса поступает из службы платежей по кредитным картам, и странно то, что когда я выполняю транзакцию и переустанавливаю строку запроса, это неправильно, но если я затем просто обновляю страницу, чтобы она снова выполняла код и строку запроса, это правильно!?

Ответы [ 3 ]

2 голосов
/ 15 февраля 2011

Параметры URL кодируются в URL, и вам нужно декодировать значения параметров URL, чтобы получить исходные значения.

Например, см. Эту реализацию URLDecode

В случае ända это кодируется в HTML, и вы найдете функцию декодирования HTML по тому же адресу.

Не уверен, почему вы получаете строку в кодировке HTML в результате запроса querystring ().

1 голос
/ 15 февраля 2011

Ааа - используйте параметры связывания вместо того, чтобы просто объединять оператор SQL вместе. Это решает ряд проблем (производительность, SQL-инъекции и т. Д.)

РЕДАКТИРОВАТЬ: Я давно не играл с MySQL, но идея такова:

command = new Command("INSERT INTO USERS(folderName) VALUES (@folderName)");

command.Parameters.Add(new MySqlParameter("@folderName", DbType.NVarChar, 255, folderName));

command.ExecuteNonQuery();

Кроме того, имя_папки должно быть столбцом Unicode (NCHAR или NVARCHAR).

0 голосов
/ 15 февраля 2011

Кажется, что он передается через строку запроса как неправильное значение.Откуда берется ценность?Похоже, именно здесь создается проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...