WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Konstiga tecken i databasen (https://www.wn.se/forum/showthread.php?t=1051166)

mojitoo 2011-11-27 20:14

Konstiga tecken i databasen
 
Hej!

Jag har sökt runt lite på olika forum etc för att försöka varför jag får konstiga tecken i min databas. Jag har förstått att det har någonting med kodningen att göra. Malmö blir exempelvis: Malmö


Jag använder mig av espresso och alla mina filer visar där UTF-8.
Mina databastabeller är sparade i latin1_swedish_ch. Jag har även testat att byta till UTF-8-Swedish vilket inte har hjälpt, samma problem uppstår även då.

Min topp av sidan ser ut såhär:
Kod:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Väljer jag att skriva ut Malmö på hemsidan istället för att spara den i databasen så skriver den korrekt ut Malmö. Men något blir som sagt fel när den sparar i databasen. Samma sak gäller konstigt nog siffror, den klarar av att skriva ut 1 799 på hemsidan men om jag sparar det i databasen så blir den endast 1.

Jag skulle vilja ha hjälp med att lösa detta, jag förstår inte vad det beror på.
Tack på förhand! :)

frecka 2011-11-27 20:35

Kolla om det blir någon skillnad:

När du byter teckenkodning på dokumentet som skickar datan
När du har en meta charset utf8
När du har en doctype
När du har databasen till utf8_general_ci
När du skickar in saker som gått genom funktionerna: utf8_decode() eller utf8_encode() i databasen.

najk 2011-11-27 21:28

Angående ditt 1799 fel, se över din kod så du inte är sårbar för sql injections.
Och ditt åäö problem, prova att sätta teckenkodning i anslutningen till databasservern också: mysql_set_charset('utf8',$link);

mojitoo 2011-11-27 22:04

Citat:

Ursprungligen postat av najk (Inlägg 20425344)
Angående ditt 1799 fel, se över din kod så du inte är sårbar för sql injections.
Och ditt åäö problem, prova att sätta teckenkodning i anslutningen till databasservern också: mysql_set_charset('utf8',$link);

Tack så mycket, mysql_set_charset('utf8',$link); löste mina problem.
Jag kom även på att mitt problem med 1 799 som blev 1 berodde på att databasen kapade vid mellanslaget då jag har formatet int eftersom att det ska vara ett pris. Vad är den bästa lösningen för detta? Ett regulärt uttryck som kollar om det finns mellanslag eller finns det en bättre lösning?

frecka 2011-11-28 09:00

spara allt som siffror, sen kan du med några fiffiga string funktioner sätta in mellanslag. Kolla på strrpos() och substr()

BarateaU 2011-11-28 10:57

Om du vill göra det lätt för dig och samtidigt fixa allt.

Dunka ner database filen lokalt, sedan ladda ner notepad++, sedan kör find&replace på alla dessa.

Å Ã…
Ä Ã„
Ö Ã–
å Ã¥
ä ä
ö ö
é é
á á
ü ü
ÿ ÿ
É Ã‰
Á Á
Ü Ãœ
Ü Ãœ


14 ggr får du starta "find&replace" och detta lär du fixa på under 1 minut om inte databasen är jätte stor för så tar genomsökningen lite längre tid.


Alla tider är GMT +2. Klockan är nu 04:30.

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