webForumDet fria alternativet

å, ä och ö blir konstiga

PHP

33 svar · 1 516 visningar · startad av Web-Tor

Medlem sedan nov. 200013 890 inlägg
Frågan#1

Med PHP visar jag resultatet från en MSSQL-databas (som ligger på en annan dator än webbsidan). Problemet är att alla å,ä och ö blir konstiga. De visas som fnuttar och annat skräp.

Någon som vet vad felet kan ligga?

Medlem sedan nov. 200013 890 inlägg
#2

När jag hämtar exakt samma data från en MySQL-databas så uppkommer inte problemet.
Är det verkligen ingen som vet vad det kan bero på?

Medlem sedan nov. 200013 890 inlägg
#3

Jag har testat lite mer och det funkar att hämta data via ASP:

<%
strConSTR =  "driver={SQL Server};server=***; uid=***; pwd=***; database=dbiom;"

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open strConSTR 

SQL = "SELECT colCell1 FROM tblcontent WHERE colID='0'"
set rs = Conn.EXECUTE (SQL)
RESPONSE.WRITE rs(0)
%>

Men kör jag i PHP så blir det fel:

<?
$connection = mssql_connect ("***", "***","***") or die ("Fel");
mssql_select_db ("dbiom") or die ("Fel");

$result = mssql_query("SELECT colCell1 FROM tblcontent WHERE colID='0'") or die ("Fel");
$row = mssql_fetch_row($result);

echo $row[0];
?>

Frågan kanske passar bätre i nåt annat forum men jag vet inte vilket? Hilfe! :x

Medlem sedan dec. 200012 464 inlägg
#4

I så fall så låter det mer som ett problem i PHP. Det är väl något med encoding 7/8 bit eller dylikt. Jag har dock ingen lösning.

Medlem sedan nov. 200013 890 inlägg
#5

Har du lust att kasta iväg tråden till PHP-forumet? :OO

Medlem sedan nov. 200013 890 inlägg
#6

Det funkar med ASP men inte med PHP.
Det ser alltså ut som att ASP är bättre än PHP.
Eller? §jr

Medlem sedan mars 20007 896 inlägg
#7
<?php
setlocale( "LC_ALL", "swedish" );
...

Kan fungera.

Medlem sedan mars 20007 896 inlägg
#8

Eller:

<?php
setlocal( "LC_ALL", "sv_SE.ISO-8859-1" );
...
Medlem sedan nov. 200013 890 inlägg
#9

Kan man bara slänga in det var som helst?

Det första ger:

Notice: Passing locale category name as string is deprecated.
Use the LC_* -constants instead.
in c:\inetpub\wwwroot\iom\xhtml\test4.php on line 10

Och det andra ger:

Fatal error: Call to undefined function: setlocal()
in c:\inetpub\wwwroot\iom\xhtml\test4.php on line 10
Medlem sedan mars 20007 896 inlägg
#10

A, juste. Du får göra så här:

setlocale( LC_ALL, "swedish" );
/* Eller: */
setlocale( LC_ALL, "sv_SE.ISO-8859-1" );

PS. Hade missat ett e i exempel två bara. ;)

Medlem sedan nov. 200013 890 inlägg
#11

Oj! Såg att det andra förslaget var felstavat. Det ger samma felmedelande som det första:

Notice: Passing locale category name as string is deprecated.
Use the LC_* -constants instead.
in c:\inetpub\wwwroot\iom\xhtml\test4.php on line 10
Medlem sedan nov. 200013 890 inlägg
#12

Nu slipper jag felmeddelanden med det blir tyvärr ingen skillnad.

/red
å = †
ä = „
ö = ”

Medlem sedan mars 20007 896 inlägg
#13

Kör du på Linux, med FreeTDS? Eller använder du Windows?

Medlem sedan nov. 200013 890 inlägg
#14

Win 2000 på PHP-burken och Win NT 4 på MSSQL-burken.

Medlem sedan sep. 2001788 inlägg
#15

Jag hade precis samma problem som du har innan.

http://www.webforum.nu/showthread.php?s=&threadid=44071&highlight=mssql

[R] Denna tråden oxå http://www.webforum.nu/showthread.php?s=&threadid=16060

/Grodan

Medlem sedan nov. 200013 890 inlägg
#16

GrodanBoll »
Ja, det ser ut som att du hade ungefär samma problem.
Jag fattar inte vad det kan vara? Det är ju när PHP hämtar data som det blir fel. När ASP hämtar data så blir det inte fel?

Medlem sedan sep. 2001788 inlägg
#17

Vet inte, verkar kanske vara någe annorlunda med MsSQL, det funkar ju jättebra mellan PHP o MySQL.
Jag har inte testat med Access, så jag vet inte hur det e där.

Skitkonstigt e det iaf.

/G

Medlem sedan aug. 20002 975 inlägg
#18

å = †
ä = „
ö = ”

Detta är tecken nr 134, 132 och 148. I DOS så ger det tecknen till vänster om likhetstecknet (å,ä,ö) i Windows ger det tecknen till höger (†,„,”).

Detta är ingen förklaring till problemet (har aldrig använt vare sig ASP eller MSSQL), men det kan kanske ge någon en idé om vad det är som spökar.

Tror inte det har ett dugg att göra med några landskoder.

Medlem sedan maj 20021 466 inlägg
#19

Teckenuppsättningen heter OEM och används i DOS. En lösning vore att konvertera från OEM till ANSI, men det verkar inte finnas någon sådan funktion i PHP.

Försök att ta reda på varför MSSQL använder OEM och inte ANSI, UTF-8 eller Unicode som teckenuppsättning. Kanske är det datan som matats in med OEM? Om du matat in den med kommandoprompten eller DOS så har du hittat anledningen.

Medlem sedan maj 200225 inlägg
#20

Hej, jag hade samma problem när jag körde PHP och MySQL, när jag gjorde om å,ä och ö till & aring; & auml; och & ouml; (utan mellanrum efter &) innan jag satte in dom i databasen så blev det rätt sen när man läste från databasen, hopas det hjälper.

262 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)