Just nu i M3-nätverket
Gå till innehåll

ÅÄÖ fungerar inte!


sundrik

Rekommendera Poster

Detta eviga problemet med åäö..

 

Det har fungerat jättebra, tills allt bara blev helt fel idag.

 

Alla filer har UTF-8

 

Har detta i filerna:

response.codepage = 65001
Response.CharSet = "utf-8"

 

Databasen har teckenuppsättning: UTF-8 Unicode (utf8)

 

 

Ändå blir det konstiga tecken när jag tar ur åäö ur databasen. Även problem när jag skall köra i åäö. Det liksom hugger av texterna.

 

Vad gör jag för fel?

Länk till kommentar
Dela på andra webbplatser

Thomas Tydal

Vad blir det för tecken?

 

Har du någon funktion som läser byte för byte? Tänk i så fall på att å, ä och ö är två bytes vardera.

Länk till kommentar
Dela på andra webbplatser

Även i meta-taggar?

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Länk till kommentar
Dela på andra webbplatser

När jag lägger in, så bara all efter åäö kapas bort.

 

Tex. om jag skall lägga in ordet 'längre', som kommer bara 'l' att finnas. Allt annat kapas bort.

 

Om jag går in i databasen via phpmyadmin och skriver in direkt, så fungerar det.

När jag sedan hämtar ut detta från en sida så blir det.

På tex. ordet 'köp & sälj' blir det 'Köp & Sälj'.

Länk till kommentar
Dela på andra webbplatser

Testa även att ange dessa precis efter du ansluter till databasen

Conn.Execute("SET NAMES utf8")

Conn.Execute("SET CHARACTER SET utf8")

Länk till kommentar
Dela på andra webbplatser

Då blir det ? istället för åäö. Mysko detta är.

 

 

edit: det blir även ? där det skall vara ´. Tex kalle´s blir kalle?s

Länk till kommentar
Dela på andra webbplatser

Anjuna Moon

Är alla filerna sparade i utf-8 format? Öppna en av filerna i Notepad och välj Spara som. Står det då UTF-8 eller ANSI i filformatslistan?

Länk till kommentar
Dela på andra webbplatser

Precis alla är sparade som utf-8

 

 

Jag har läst runt lite. Det fins något som heter latin 1, eller ISO-8859-1 som det också heter.

Borde inte det vara bättre att ha?

Länk till kommentar
Dela på andra webbplatser

Thomas Tydal

ISO-8859-1 har bara 224 tecken. UTF-8 har väl runt 50 000 (läs: alla tecken som finns). Men det är klart, om du inte behöver fler än de 224 tecknen i ISO-8859-1 så duger ju den (och det behöver du inte om du håller dig till svenska exempelvis).

 

Men det viktigaste i såna här sammanhang är att du talar om för datorn vilken teckenuppsättning du faktiskt använder (inte vilken du vill använda). Får du teckenkodningsproblem så beror inte det på vilken teckenuppsättning du valt, utan på att du angett fel...

 

Köp & Sälj innebär att datorn tror att din UTF-8-text är i ISO-8859-1. Förmodligen skedde detta när du la in texten i databasen. Om du använde ett skript måste du som Jonas B skriver köra SET NAMES 'utf8' precis innan du lägger in datat. Om du lägger in det via phpmyadmin måste du när du loggar in på phpmyadmin ange att du kommer att använda UTF-8. Standardinställningen för Mysql är annars ISO-8859-1.

Länk till kommentar
Dela på andra webbplatser

Jag kan absolut inte hitta vart felet ligger, så nu går jag över till latin1.... *suck*

 

Skall alla filer sparas som ansi då?

 

Hjälper det något om man sätter en Session.LCID, isf vad skall den vara?

Länk till kommentar
Dela på andra webbplatser

Kontrollera att databasens collationen och alla fält är satt till utf-8.

codepage 65001 uppe i asp language-taggen och filer till Utf8 samt metan är korrekt satt så skall du vara hemma. Kontrollera så du inte ställt om kodningen i webbläsaren till annat än automatiskt

Länk till kommentar
Dela på andra webbplatser

Alla fält har utf-8. alla tabbeller likaså.

Själva databasen skall ha utf-8....meeen

 

När jag går int under "Show MYSQL system variables" (phpmyadmin) hittar jag detta:

[log]character set client utf8

(Global value) latin1

character set connection utf8

(Global value) latin1

character set database latin1

character set results utf8

(Global value) latin1

character set server latin1

character set system utf8

character sets dir /usr/share/mysql/charsets/

collation connection utf8_unicode_ci

(Global value) latin1_swedish_ci

collation database latin1_swedish_ci

collation server latin1_swedish_ci[/log]

 

Hittar inte hur jag skall kunna ändra detta..

Länk till kommentar
Dela på andra webbplatser

ja, det ser ut så här:

[log]connect.open(dbOpen)

connect.execute("SET NAMES utf8")

connect.execute("SET CHARACTER SET utf8")

connect.execute("UPDATE tbl_page SET pComment = '" & tPageComment &"', pPage = '" & tFileName &"', pActive = '" & tActive &"', pPageName = '" & tPageName &"', pPageMeny = '" & tPageMeny &"', pParentPage = '" & tParentPage &"', pGroup = '" & tGroup &"' WHERE pID ="& tID &"")

connect.close

Set Connect = Nothing[/log]

 

allt efter antingen å,ä eller ö försvinner totalt.

 

skriver jag "Fördärva", så kommer det bara att läggas in "F" i databasen.

"Hej Världen" blir "Hej V" osv osv.??

Länk till kommentar
Dela på andra webbplatser

Och du har inga includefiler på sidan som är i annat än utf-8?

 

Det är onekligen någonstans som du glömt, om allt är rätt gjort ska det fungera.

Krasst, men det är så det är.

Länk till kommentar
Dela på andra webbplatser

Här är en sida som åäö inte kan skrivas in i dbn. Bara kapas bort. likaså tecken som ´

 

Filen är sparad som utf-8.

inga include.

[log]<%

Response.ContentType = "text/html"

Response.CharSet = "utf-8"

 

'Databasen

Set Connect = Server.CreateObject("ADODB.Connection")

dbOpen = "Driver={MySQL ODBC 3.51 Driver};Server=XXX;charset=UTF8;Database=XXX;User=XXX; Password=XXX; Option=3;"

 

'Att sidan skall vara med svenskt datum.

Session.LCID = 1053

%>

<title>SIDA</title>

<!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" dir="ltr" lang="sv">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<link href="style/style.css" rel="stylesheet" type="text/css">

</head>

<body>

<% pID = 28

connect.open(dbOpen)

set rs = connect.execute("SELECT * FROM XXX WHERE pID ="& pID&"")

pName = rs("pName")

pComment = rs("pComment")

set rs = nothing

connect.close

%>

<form method='POST' action='?do=edit&pID=<%=pID %>'>

<table width="600">

<tr><td>

NAMN*<br /><td><input type='text' name='tName' size='30' value='<%=pName %>'></td></tr>

<tr><td>Beskrivning<br /></td><td><textarea name='tComment' rows='4'><%=pComment %></textarea></td></tr>

<tr><td><input type='hidden' name='tID' value='<%=pID%>'><input type="submit" name="Submit" value="Lägg in sidan/filen" /></td></tr>

</table>

</form>

<%

IF Request("do") = "edit" THEN

 

tID = request.form("tID")

tName = request.form("tName")

tComment = request.form("tComment")

 

connect.open(dbOpen)

connect.execute("SET NAMES utf8")

connect.execute("SET CHARACTER SET utf8")

connect.execute("UPDATE XXX SET pComment = '" & tComment &"', pName = '" & tName &"' WHERE pID ="& tID &"")

connect.close

Set Connect = Nothing

response.redirect "?KLART"

END IF

%>

</body>

</html>[/log]

 

känns som att det är fel i databasen.. men har absolut ingen aning hur man ändrar detta.

 

Kanske skall skapa en tråd i mysql-hörnan istället?

Länk till kommentar
Dela på andra webbplatser

har du testat att ha med

<%@language="VbScript" codepage=65001%>

längst upp på sidan

 

annars är det nog databasen.

Länk till kommentar
Dela på andra webbplatser

Jepp, det har jag testat...

 

jag skall ställa denna frågan i mysql delen istället.

 

Tack för hjälpen.

Länk till kommentar
Dela på andra webbplatser

Det är väl bättre att i så fall be att få denna tråd flyttad till rätt forum istället för att ha samma frågeställning i två olika forum.

 

Men innan dess, hur ser formulärsidan ut?

Hur fungerar det om du (på asp-sidan) hårdkodar in värden som sparas i databasen?

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...