WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Problem med Å-Ä-Ö (https://www.wn.se/forum/showthread.php?t=1042661)

Dakota 2010-06-23 14:53

Problem med Å-Ä-Ö
 
Hej!
Har ett problem med ett script som jag nyss köpte. Förut så visades ÅÄÖ som fyrkanter i den text jag översatte i språkfilen.

När jag sedan hittade meta texten och ändrade från utf-8 till Iso-8859-1 så syntes ÅÄÖ korrekt. MEN nu så är det något fel med de texter som finns lagrade i databasen, t.ex namnet på kategorierna.

När jag byter tillbaka till utf-8 så syns kategoriernas namn etc. korrekt, men inte översättningen och tvärtom.

Vad ska jag göra?

martine 2010-06-23 15:00

1. Använd alltid genomgående utf-8 för att slippa problem.
2. Mixtra inte med teckenkodningen om du inte vet vad du gör eftersom du kan hamna i ännu värre kaos än innan.

Du sparar uppenbarligen inte din fil i rätt format, se till att du sparar i utf-8 (eller konvertera till detta format).

Dakota 2010-06-23 15:08

Citat:

Ursprungligen postat av martine (Inlägg 20360533)
1. Använd alltid genomgående utf-8 för att slippa problem.
2. Mixtra inte med teckenkodningen om du inte vet vad du gör eftersom du kan hamna i ännu värre kaos än innan.

Du sparar uppenbarligen inte din fil i rätt format, se till att du sparar i utf-8 (eller konvertera till detta format).

Det enda jag gjort är ju att översätta texten i språkfilen. När inte det fungerade då tecknen visades som fyrkanter så ändrade jag till ISO-8859-1 i Meta, nu fungerar översättningen men inte de texter som matas ut ur databasen.

Skulle behöva hjälp med denna del.

abergman 2010-06-23 15:54

Citat:

Ursprungligen postat av Menox (Inlägg 20360534)
Det enda jag gjort är ju att översätta texten i språkfilen. När inte det fungerade då tecknen visades som fyrkanter så ändrade jag till ISO-8859-1 i Meta, nu fungerar översättningen men inte de texter som matas ut ur databasen.

Skulle behöva hjälp med denna del.

Vad har du för teckenkodning på datan som finns i databasen? Det är inte superovanligt att den också är i "fel" teckenkodning. Den bör, precis som scriptfilen också vara UTF-8, är den något annat så kan det bli fel.

dannelito 2010-06-23 16:05

Föreslår att du gör som martine säger. Ändra tillbaka till UTF-8 i meta-taggen och konvertera språkfilen till UTF-8 med lämpligt program, t ex Notepad++.

Dakota 2010-06-23 22:08

Citat:

Ursprungligen postat av abergman (Inlägg 20360537)
Vad har du för teckenkodning på datan som finns i databasen? Det är inte superovanligt att den också är i "fel" teckenkodning. Den bör, precis som scriptfilen också vara UTF-8, är den något annat så kan det bli fel.

utf8_general_ci, säg gärna till om det är något fel.

Citat:

Ursprungligen postat av wiseguy (Inlägg 20360538)
Föreslår att du gör som martine säger. Ändra tillbaka till UTF-8 i meta-taggen och konvertera språkfilen till UTF-8 med lämpligt program, t ex Notepad++.

Har nu laddat ner Notepad++, och vilket program det är! Tack så mycket för tipset! I alla fall, öppnade språkfilen i PHP med Notepad++ och valde format, sedan utf-8. Sparade sedan och laddade upp den nya filen på servern igen.

Har även ändrat tillbaka metan till utf-8.
Inget har dock ändrats.

Förslag?

P3N 2010-06-29 09:40

Jag råkade ut för samma dilemma en gång..... Höll på att bli galen nästan :-). Ändrade till UTF-8 på allt och fick ändå inte rätt på det. Så får att lösa det hela fick det bli en "fuling". Om du konverterar åäö/ÅÄÖ till html´s variant av kodning innan du sparar och sen konverterar när du hämtar infon igen så borde detta lösa det. (Det funkade för mig iallafall).

Exempel:

Konvertera bort åäö/ÅÄÖ i php.
PHP-kod:

function fixswedish($text) {
    
$text preg_replace('/å/','å',$text);
    
$text preg_replace('/ä/','ä',$text);
    
$text preg_replace('/ö/','ö',$text);
    
$text preg_replace('/Å/','Å',$text);
    
$text preg_replace('/Ä/','Ä',$text);
    
$text preg_replace('/Ö/','Ö',$text);
    return 
$text;


Och konvertera tillbaka:
PHP-kod:

function reversefixswedish($text) {
    
$text preg_replace('/å/','å'$text);
    
$text preg_replace('/ä/','ä',$text);
    
$text preg_replace('/ö/','ö',$text);
    
$text preg_replace('/Å/','&Aring',$text);
    
$text preg_replace('/Ä/','Ä',$text);
    
$text preg_replace('/Ö/','Ö',$text);
    return 
$text;



martine 2010-06-29 11:37

Citat:

Ursprungligen postat av P3N (Inlägg 20360933)
Jag råkade ut för samma dilemma en gång..... Höll på att bli galen nästan :-). Ändrade till UTF-8 på allt och fick ändå inte rätt på det. Så får att lösa det hela fick det bli en "fuling". Om du konverterar åäö/ÅÄÖ till html´s variant av kodning innan du sparar och sen konverterar när du hämtar infon igen så borde detta lösa det. (Det funkade för mig iallafall).

Det är verkligen en nödlösning med potential att krångla till det ännu mer i framtiden (helt bortsett från att det slösar en massa datorkraft att processa texter i onödan fram och tillbaks). Dessutom så missar du en massa tecken som till exempel é i idé (och en förskräcklig massa andra tecken).

Det bästa är att lösa problemet - detta är vanligt och återkommande och det måste finnas hur mycket som helst att läsa om detta på nätet.

Du kan ju alltid länka filen här så kan någon kika på den.

Dakota 2010-06-29 12:15

Oj! Hade nästan glömt denna tråden. Tack för svaren!
I alla fall. Jag löste problemet genom att öppna filen i Noepadd++ och spara till utf-8, precis som martine rekommenderade. Det fungerade! Tack.

P3N 2010-06-29 17:32

martine: Jag håller fullständigt med dig martine. Men ibland kan det vara så att en nödlösning är bästa sättet att komma vidare. Sen får man backa tillbaka och lösa det man vet inte är bra. Det kan ju vara så att själva användandet av funktionen uppkommer sällan och då är det mindre intressant kanske om det tar datakraft eller ej. Men visst. Bättre att lösa det rätt från början.

Menox: Skönt att det löste sig :-). Notepad++ är suveränt :-)


Alla tider är GMT +2. Klockan är nu 01:40.

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