Aller au contenu

[PHP] une question d'encodage


serik

Messages recommandés

Salut, j'ai quelques problèmes d'encodage pour mon appli, qui est, je le rappelle en java.

J'utilise un encodage utf-8 dans mon appli, mais l'hébergement est par défaut en 8859-1 (pas sûr).

Donc je voudrai savoir comment récupérer les variables du POST correctement (présence d'accents)

Autre question : comment savoir quelle est l'encodage actuel?

Merci.

Lien vers le commentaire
Partager sur d’autres sites

En PHP, il vaut mieux utiliser iconv. utf8-decode et encode fait le lien utf8 -> ISO-8859-1. Donc, si tu connais pas ton encodage de base (windows est en windows-55quelquechose), préférer iconv.

Par contre, j'ai du mal à suivre... Ton appli est en java et ton topic parle de PHP...

LSP, le manchot qui doit être fatigué

Lien vers le commentaire
Partager sur d’autres sites

La balise meta sert à indiquer au navigateur dans quel charset lire le flux. Ce qui formatte le charset, c'est le serveur et également, le charset dans lequel tu as écrits ton code.

Genre, en JAVA, mais aussi en PHP, tu peux régler le charset du flux via la méthode content-type("text/html charset=UTF-8") ou un truc du genre. Enfin, là chui plus en état, je me suis pris la tête la dessus toute la journée au boulot :'(

LSP, le manchot qui pleure des larmes de sang

Lien vers le commentaire
Partager sur d’autres sites

Après c'est bizarre quand même, j'ai jamais eu ce pb alors que j'ai aussi eu ma période UTF-8...

Les données post étaient récupérées normalement et toussa...

Sinon pour voir le charset utilisé par php et apache, les options de iconv et tout le bordel, un p'tit phpinfo() devrait faire l'affaire.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Une partie de mon code :

		String encodeType = "ISO-8859-1"
	String var_Id=null;
	String var_Key=null;
	String var_PartyName=null;
	String var_Ip=null;
	String var_Port=null;
	try {
		var_Id = "&"+URLEncoder.encode("Id", encodeType)+"="+URLEncoder.encode(Id, encodeType);
		var_Key = "&"+URLEncoder.encode("Key", encodeType)+"="+URLEncoder.encode(Key, encodeType);
		var_PartyName = "&"+URLEncoder.encode("PartyName", encodeType)+"="+URLEncoder.encode(PartyName, encodeType);
		var_Ip = "&"+URLEncoder.encode("Ip", encodeType)+"="+URLEncoder.encode(Ip, encodeType);
		var_Port = "&"+URLEncoder.encode("Port", encodeType)+"="+URLEncoder.encode(Port, encodeType);
	} catch (UnsupportedEncodingException e) {
		e.printStackTrace();
	}

	// Exécution du script
	URL url;
	try {
		url = new URL(Environment.siteBase+"lescript.php");
	} catch (MalformedURLException e1) {
		e1.printStackTrace();
		throw new IllegalStateException("MalformedURLException.java");
	}

		InputStream is = null;
		OutputStream os = null;
		try {

			//création de la connection
			URLConnection conn = url.openConnection();
			conn.setDoOutput(true);
			//envoi de la requête
			os = conn.getOutputStream();
			os.write(var_Id.getBytes());
			os.write(var_Key.getBytes());
			os.write(var_PartyName.getBytes());
			os.write(var_Ip.getBytes());
			os.write(var_Port.getBytes());
			os.flush();
			//lecture de la réponse
			is = conn.getInputStream(); 
			........

Le problème c'est que selon les servers ils n'ont pas forcément le même charset. Pour l'instant je suis hébergé par OVH donc j'ai un charset en 8859-1, mais si je rajoutais un serveur externe en UTF-8?

Lien vers le commentaire
Partager sur d’autres sites

Pour les perfs je pense que UTF-8 doit être plus gourmand vu qu'un caractère = 2 octets

Idem pour l'espace occupé dans la BD... 2x plus en gros :yes:

Pour l'interfaçage Java je sais pas, mais pour ce qui est des trucs genre phpMyAdmin et tous les outils mySQL officiels bah ça foire... peut être qu'ils ont corrigé le tir mais ya 6 mois les caractères spéciaux étaient pas gérés...

C'est ce qui m'a fait abandonner UTF-8 :transpi:

Lien vers le commentaire
Partager sur d’autres sites

Pour ce qui est de la taille je vien de tester avec des fichier texte, il y a une différence de taille (x2) que pour les caractère spéciaux (çàéè), mais les charactères (abc¤) prènnent autant de place.

Sinon pour ce qui est de phpMyAdmin il fonctionne trés bien avec l'utf8 (tester sur un serveur installé en iso avec un site en utf8 et testé sur un serveur full utf8)

Sinon a mon avis c'est pas pour rien que de nombreuse distribution linux passe à l'utf8, pour moi j'ai définitivement abandoné l'iso.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...