WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   php -> mysql -> åäö (https://www.wn.se/forum/showthread.php?t=29257)

pjm 2008-05-12 22:57

Tjenare. försökte söka och kolla om detta diskuterats tidigare, hittade några exempel men inget som jag tyckte stämde in på det jag undrar över.

Jag har ganska konstiga problem med att jämföra data i min db (mysql) från php för om jag lägger in uppgifter med INSERT i php så blir Ä = Â_ eller nåt sånt. och det blir sen helt fel när jag ska jämföra för att se om användaren redan existerar. :huh:

Jag vet ju att problemet antagligen är rätt lätt att lösa, men i vilken ände ska det lösas? ändra charset på databas/phpsidan/nåt annat?

Tacksam för svar

WizKid 2008-05-12 22:58

Använd samma charset överallt. I PHP-filen, i HTML-koden, i HTTP-headern, i MySQL och i kopplingen mellan PHP och MySQL.

pjm 2008-05-12 23:00

hmm.. jag körde "utf-8" som om jag fatta det rätt ska vara samma som körs på phpmyadmin. men det verkade inte stämma heller.. blir tokig på sånthär ;)

Edit: Kopplingen mellan php & mysql?

WizKid 2008-05-12 23:06

http://www.phpportalen.net/viewtopic.php?p...p=559018#559018

pjm 2008-05-12 23:11

Tusen tack!!

mysql_query("SET NAMES 'utf8'") or die(mysql_error());
mysql_query("SET CHARACTER SET 'utf8'") or die(mysql_error());

gjorde susen. inte stött på detta tidigare..

warpi2 2015-11-28 18:40

Eftersom jag nu själv fått utstå några timmars felsökning gällande problem med åäö i samband med php och mysql, så tänkte jag med detta inlägg nu bespara framtida programmerare detta.

För att få åäö att fungera problemfritt, se till följande
1. PHP-filen du exekverar är enkodad i UTF-8
2. Använd följande kommando i php-filen "mysql_query("SET NAMES 'utf8'") or die(mysql_error());"
3. Använd följande kommando i php-filen "mysql_query("SET CHARACTER SET 'utf8'") or die(mysql_error()); "
4. Se till att anslutning till databasen i phpmyadmin är "Server connection collation: utf8_general_ci"
5. Se till att mysqltabellen har inställningen "Collation utf8_bin"
6. Se till att mysqlraden har inställningen "Collation utf8_bin"
7. Headern på sidan <head><meta charset="UTF-8"></head>
8. Kolla så att php.ini är konfigurerad med "default_charset = "utf-8""

Och om du följer ovan instruktioner kommer du inte behöva använda följande kommandon
9. utf8_encode() eller utf8_decode()

Om du skall skicka epost med mail() funktionen, se till att ha med följande i headern
10. "Content-type: text/html; charset=UTF-8" . "\r\n";

Lycka till :)

x264 2015-11-28 19:06

Citat:

Ursprungligen postat av warpi2 (Inlägg 20514492)
Eftersom jag nu själv fått utstå några timmars felsökning gällande problem med åäö i samband med php och mysql, så tänkte jag med detta inlägg nu bespara framtida programmerare detta.

För att få åäö att fungera problemfritt, se till följande
1. PHP-filen du exekverar är enkodad i UTF-8
2. Använd följande kommando i php-filen "mysql_query("SET NAMES 'utf8'") or die(mysql_error());"
3. Använd följande kommando i php-filen "mysql_query("SET CHARACTER SET 'utf8'") or die(mysql_error()); "
4. Se till att anslutning till databasen i phpmyadmin är "Server connection collation: utf8_general_ci"
5. Se till att mysqltabellen har inställningen "Collation utf8_bin"
6. Se till att mysqlraden har inställningen "Collation utf8_bin"
7. Headern på sidan <head><meta charset="UTF-8"></head>
8. Kolla så att php.ini är konfigurerad med "default_charset = "utf-8""

Och om du följer ovan instruktioner kommer du inte behöva använda följande kommandon
9. utf8_encode() eller utf8_decode()

Om du skall skicka epost med mail() funktionen, se till att ha med följande i headern
10. "Content-type: text/html; charset=UTF-8" . "\r\n";

Lycka till :)


Värt att bumpa ett inlägg från 2008 med saker de andra redan har sagt? Dessutom är mysql funktionerna deprecated!

gregoff 2015-11-29 12:23

mysql_ funktionerna är direkt livsfarliga att använda. Kolla upp PDO och prepared statements.

http://wiki.hashphp.org/PDO_Tutorial...SQL_Developers

danjel 2015-11-30 15:11

För formulär, använd:
accept-charset="UTF-8"

En relaterad fråga,
hur bör man hantera de fall där användare(kanske hackers) skickar in t.ex UTF-7 via formulär? Blev inte klok på detta sist jag kollade

Nerix 2015-11-30 15:28

Citat:

Ursprungligen postat av danjel (Inlägg 20514534)
För formulär, använd:
accept-charset="UTF-8"

En relaterad fråga,
hur bör man hantera de fall där användare(kanske hackers) skickar in t.ex UTF-7 via formulär? Blev inte klok på detta sist jag kollade

Konvertera datan från UTF-7 till 8 så är du klar. Finns mjukvaror som hjälper dig att lista ut vilken teckenkodning som används.


Alla tider är GMT +2. Klockan är nu 18:12.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson