WN

WN (https://www.wn.se/forum/index.php)
-   Klientsidans teknologier, design och grafik (https://www.wn.se/forum/forumdisplay.php?f=12)
-   -   utf8 o.s.v. en gång för alla (https://www.wn.se/forum/showthread.php?t=36098)

Althalos 2009-04-02 21:29

När man hämtar information ifrån en mysqldatabas, hur ska man göra för att kunna skriva ut åäö? Det fungerar oftast inte för mig och har aldrig förstått varför :S

har ju något med teckenkodning. Brukar fulhakka utf8_decode(), om inget annat hjälper.

Jimpsson 2009-04-02 21:45

Spara filerna som UTF-8 utan BOM.
Sätt header("Content-type: text/html; charset=utf-8"); högst upp i index.
Sätt mysql_query("SET NAMES UTF8"); efter att du skapat din databasanslutning.

Jonas 2009-04-02 21:56

Använder du MySQLi så fungerar: set_charset('utf8') på samma sätt som Rokkan1 skrev med "SET NAMES".

Jine 2009-04-03 01:23

Citat:

Originally posted by Rokkan1@Apr 2 2009, 20:45
Spara filerna som UTF-8 utan BOM.
Sätt header(Content-type: text/html; charset=utf-8); högst upp i index.
Sätt mysql_query(SET NAMES UTF8); efter att du skapat din databasanslutning.

Samt även:
Kod:

<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
... överst i din HTML fil.

Glöm inte heller att lagra datan i MySQL som UTF-8.



Alternativt mysql_set_charset för vanliga MySQL (Rekomenderas av PHP's manual istället för SET NAMES's queryn.)

Citat:

Note: This is the preferred way to change the charset. Using mysql_query() to execute SET NAMES .. *is not recommended.

ELLER, om problemet fortfarande kvarstår KAN det vara en lösning att tvinga MySQL till att använda UTF-8 till "ALLT"
Med tex:
Kod:

mysql_query("SET character_set_results = 'utf8',
character_set_client = 'utf8',
character_set_connection = 'utf8',
character_set_database = 'utf8',
character_set_server = 'utf8'", $conn);


tartareandesire 2009-04-03 08:18

Det står aldrig någonstans varför man inte ska använda SET NAMES i sin query? Vore intressant att veta. Däremot var det någon som försökt göra detta med arabiska tecken och det inte fungerat så det finns ju uppenbarligen någon nackdel med det.

Magnus_A 2009-04-03 09:20

Man använder kanske inte "set names" i varje fråg utan en gång när man skapar anslutningen. Behövs inte om servern är rätt konfigurerad från början, kolla genom att ställa frågan "SHOW VARIABLES LIKE 'char%';"
För korrekt presentation i browsern är det läge att skicka med rätt headers, i apache gör man det genom att sätta direktivet DefaultCharset i konfigureringen.

tartareandesire 2009-04-03 09:27

Citat:

Originally posted by Magnus_A@Apr 3 2009, 09:20
Man använder kanske inte set names i varje fråg utan en gång när man skapar anslutningen. Behövs inte om servern är rätt konfigurerad från början, kolla genom att ställa frågan SHOW VARIABLES LIKE char%;
För korrekt presentation i browsern är det läge att skicka med rätt headers, i apache gör man det genom att sätta direktivet DefaultCharset i konfigureringen.

Jo, att man inte ska använda det i varje fråga är väl en grej =) Det var inte det jag syftade på. Det är inte alltid man har tillgång till serverkonfigurationen så ibland behövs det faktiskt.

Magnus_A 2009-04-03 10:59

Missuppfattade dig, sorry.

Althalos 2009-04-03 20:45

tack ska ni ha. Äntligen! Har inte förstått det här innan. SET NAMES UTF8 är det samma som att typ ändra kollationeringen lr vad det heter på tabellerna?

Magnus_A 2009-04-03 22:26

Citat:

Originally posted by Althalos@Apr 3 2009, 20:45
tack ska ni ha. Äntligen! Har inte förstått det här innan. SET NAMES UTF8 är det samma som att typ ändra kollationeringen lr vad det heter på tabellerna?
Inte alls. Kollationering styr endast hur resultatet sorteras när du begär sort by (kolumn). Olika kollationeringar är giltiga i olika teckenuppsättnignar, utöver det har det inget att göra med teckenuppsättningen.


Alla tider är GMT +2. Klockan är nu 22:35.

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