Проблема заключается в том, что jQuery не запускает собственное click
событие для элементов , так что навигация не происходит (нормальное поведение
), поэтому вам нужно сделать это вручную. Для почти всех других сценариев запускается собственное DOM-событие (по крайней мере, попытка - это попытка try / catch).
Чтобы запустить его вручную, попробуйте:
var a = $("")
.attr("href", "http://i.stack.imgur.com/L8rHf.png")
.attr("download", "img.png")
.appendTo("body");
a[0].click();
a.remove();
DEMO: http://jsfiddle.net/HTggQ/
Соответствующая строка в текущем источнике jQuery: https://github.com/jquery/jquery/blob/ 1.11.1 / src / event.js # L332
if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
jQuery.acceptData( elem ) ) {
Это необходимо, когда вы хотите отправить данные на сервер с символами, которые не могут быть представлены в чистом ASCII, например «ñ» или «ö».
Это, если экземпляр MySQL не настроен на ожидайте кодировку UTF-8 по умолчанию из клиентских подключений (многие из них зависят от вашего местоположения и платформы.)
Прочитайте http://www.joelonsoftware.com/articles/Unicode.html , если вы не знаете, как работает Unicode.
Прочтите Использовать & SET SET NAMES & quot; , чтобы увидеть альтернативы SET NAMES и что именно это значит.
Не только PDO. Если sql ответить как '????' символы, пресеты из вашей кодировки (надежда UTF-8) действительно рекомендуются:
if (!$mysqli->set_charset("utf8"))
{ printf("Can't set utf8: %s\n", $mysqli->error); }
или с помощью стиля процедуры mysqli_set_charset($db,"utf8")
Этот запрос должен быть написан перед запросом, который создает или обновляет данные в базе данных, этот запрос выглядит так:
mysql_query("set names 'utf8'");
Обратите внимание, что вы должны написать кодировку, которую вы используете в заголовке для Например, если вы используете utf-8, вы добавляете его так же, как в заголовке, или это вызовет проблему с Internet Explorer
, чтобы ваша страница выглядела как
<html>
<head>
<title>page title</title>
<meta charset="UTF-8" />
</head>
<body>
<?php
mysql_query("set names 'utf8'");
$sql = "INSERT * FROM ..... ";
mysql_query($sql);
?>
</body>
<html>
SET NAMES указывает, какой символ будет использоваться клиентом для отправки операторов SQL на сервер.
blockquote>Более подробно (и опять же, безвозмездно снято с руководства ):
SET NAMES указывает, какой набор символов будет использоваться клиентом для отправки операторов SQL в сервер. Таким образом, SET NAMES 'cp1251' сообщает серверу, что «будущие входящие сообщения от этого клиента находятся в наборе символов cp1251». Он также указывает набор символов, который сервер должен использовать для отправки результатов обратно клиенту. (Например, он указывает, какой символ должен использоваться для значений столбца, если вы используете инструкцию SELECT.)
blockquote>
Получение права кодирования действительно сложно: слишком много слоев:
Команда SQL «SET CHARSET utf8» из PHP гарантирует, что клиентская сторона (PHP) получит данные в utf8, независимо от того, как они хранятся в базе данных. Конечно, они должны быть правильно сохранены.
Кодировка, определенная для таблицы / столбца, на самом деле не означает, что данные находятся в этой кодировке , Если у вас есть таблица, определенная как utf8
, но сохраненная как различная кодировка, тогда MySQL будет рассматривать их как utf8
, и у вас проблемы. Это означает, что вам нужно сначала исправить это.
Вам нужно проверить, какая кодировка потока данных на каждом уровне.
Если вы получаете данные, например. windows-1250
и хотите сохранить в utf-8
, затем используйте этот SQL перед сохранением:
SET NAMES 'cp1250';
Если у вас есть данные в DB как windows-1250
и вы хотите вернуться utf8
, используйте:
SET CHARSET 'utf8';
Не используйте слишком «умные» инструменты для отображения данных. Например. phpMyAdmin делает (делал, когда я его использовал) кодирование действительно плохо. И он проходит через все слои, поэтому его трудно узнать. Кроме того, в Internet Explorer было действительно глупо поведение «угадывания» кодировки, основанной на странных правилах. Используйте простые редакторы, где вы можете переключать кодировку. Кроме того, я рекомендую MySQL Workbench.
Вместо этого с помощью SQL-запроса используйте функцию php: mysqli :: set_charset mysqli_set_charset
Note: This is the preferred way to change the charset. Using mysqli_query() to set it (such as SET NAMES utf8) is not recommended.
Дополнительную информацию см. в разделе концепций набора символов MySQL.
< / blockquote>
Спасибо @all!
не использовать: query ("SET NAMES utf8"); это настройка, а не запрос. положите это прямо на начало соединения с setCharset () (или аналогичным методом)
немного мелочи в parctice:
status:
Сохранять и читать данные не проблема, так как long mysql может обрабатывать символы. если вы посмотрите в db, вы уже увидите, что в нем есть дерьмо (например, использование phpmyadmin).
до сих пор это не проблема! (неправильно, но работает часто (в европе)) ..
.. если другой клиент / программа или измененная библиотека, которая работает правильно, будут читать / сохранять данные. то у вас большие неприятности!
SET NAMES UTF8
для них? – Tim 26 June 2011 в 08:12SELECT
. – Leopoldo Sanczyk 20 November 2015 в 21:54