bien, así que aquí está el problema:jQuery ajax caracteres especiales problemas
Tengo un formulario en mi página php. Cuando un usuario ingresa un nombre, una imprenta envía un evento de jQuery click (en el botón de enviar) recopila la información y la pasa a través de $ .ajax().
$.ajax({
url: "ajax/addGatheringSignup.php",
type: "POST",
async: true,
dataType: 'json',
data: {
"id": $_GET['id'],
"name": $signupNameInput.val()
},
success: function(jsonData){
if(jsonData[0].feedback == "ok"){
$signupForm = $('#singupform');
$signupForm.html('Signup successful!');
}else{
Alert(jsonData[0].feedback);
}
},
error: function(){
Alert("error alert");
}
});
Como puede ver, el campo "nombre" es el valor del nombre inputfield. Pero cuando envío esto a mi página php (donde no formateo nada en el texto) es totalmente basura en mi base de datos MySql. En este momento estoy tratando de obtener las letras danesas æ, ø y å para trabajar.
Atm sé que mi base de datos mysql está usando UTF-8 y mi metacabezado para mi index.php se ve así (cada página se genera desde la página index.php ... ex index.php? Page = random):
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Pero nada funciona. Cuando publico: "æÆ-øØ-åÅ" a la base de datos que guarda como: "Ã|à † -øÃ~-à ¥ ...". ¿Alguien sabe lo que tengo que hacer?
EDIT 1:
puedo ver que en una ajax éxito presentar el html me puse $ signupForm a (la línea 13 en el código anterior) muestra mal también (la cual es normalmente algunas palabras danesas donde escribe los caracteres daneses mencionados)
EDIT 2 (que se encuentra una solución):
he encontrado una manera. $ .ajax() de acuerdo con el documento jQuery, siempre analiza los datos como UTF8. No sé por qué esto estropeó mi código, pero cuando agregué * utf8_decode ($ name) * a la función de agregar que analizó correctamente (así que supongo que mi juego de caracteres debe haberse configurado de alguna manera como ISO-8859-1 oculto?) Esto simplemente lo hizo más fácil ya que pude volver a activar mi antiguo juego de caracteres ISO-8859-1 y eliminar todas mis funciones utf8_encode().
Mi último problema fue el presentado en "EDIT 1". Aquí he encontrado una solución sobre cómo convertir cadenas UTF8 (de nuevo debido a .ajax $()):
function decode_utf8(s){
return decodeURIComponent(escape(s));
}
Sí im todavía trabajando en ella y acaba de descubrir que si añado "æÆøØåÅ" a la sentencia-sql que todavía muestra mal, así que sí que es la base de datos. Pero, ¿qué juego de caracteres tengo que configurar cuando utilizo UTF-8 en mi metacabezado? ¿Solo "UTF-8"? –
Creo que sí, sí. Normalmente uso UTF8-Unicode para la intercalación. – Rijk
justed chekc mi DB a través de phpMyAdmin: conjunto de caracteres de MySQL: UTF-8 Unicode (UTF-8) así que no es: S –