Avatar billede okf2000 Praktikant
22. december 2014 - 13:29 Der er 6 kommentarer og
1 løsning

SQL via. ODBC Careset problemmer,

Kan ikke få charset til at makkeret når jeg henter fra MS SQL, via ODBC, men har ingen problem med de info jeg henter fra Mysql.

og ja, jeg ved godt at jeg programmer som de blinde slogs, men normalt få jeg det til at virke.

men lige gyldigt hvad jeg gør med denne så lykkes det ikke.
-----------------------------------------------------------------

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<?
  header('Content-Type: text/html;charset=utf-8');
?>

<?php

$conn = odbc_connect("Driver={SQL Server};Server=PROSERVER\BKUPEXEC;Database=xxx;", 'xxx', 'xxx');

$html = '';
$html .= '<li class="result">';
$html .= '<a href="urlString">';
$html .= '<h3>nameString - postString</h3>';

$html .= '</a>';
$html .= '</li>';

// Get Search

$search_string =  $_POST['query'];
echo $search_string;


// Check Length More Than One Character

    // Build Query
    $query = "SELECT NAVN, LXBENUMMER, SXGENAVN, POSTBY FROM DEBKART WHERE DATASET='DAT' AND NAVN LIKE '%$search_string%'" ;

    // Do Search
    $result = odbc_exec($conn, $query);
    //exit;
    while(odbc_fetch_row($result)){
          $name = utf8_decode(odbc_result($result, 1));
        $nummer = utf8_decode(odbc_result($result, 2));
          $post = utf8_decode(odbc_result($result, 4));

        // Format No Results Output
        $output = str_replace('urlString', 'index.php?rappid='.$nummer , $html);
        $output = str_replace('nameString', $name, $output);
        $output = str_replace('postString', $post, $output);

        // Output
        echo($output);
    }


?>

--------------------------------------------------------------
Avatar billede jakobdo Ekspert
22. december 2014 - 13:52 #1
Prøv evt at tilføje dette til din "connect:

Client_CSet=UTF-8
Så det bliver:

$conn = odbc_connect("Driver={SQL Server};Server=PROSERVER\BKUPEXEC;Database=xxx;Client_CSet=UTF-8;", 'xxx', 'xxx');
Avatar billede okf2000 Praktikant
22. december 2014 - 14:36 #2
Det hjælp desværre ikke,
Men tro at jeg begynder at gå ind for afskaffesle af ÆØÅ.

For nu er problemme udvide sig og nu giver den heller ikke hente den ordenligt MySQL.
på nogen af mine sider.
Det skal dov siges at MySQL problemmer er kommer efter en opdatering, så skal lige have fundet ud af hvad der gik galt der, men MSSQL var der før opdaten.
Avatar billede olsensweb.dk Ekspert
22. december 2014 - 14:56 #3
prøv ref http://stackoverflow.com/questions/2750244/php-odbc-encoding-problem
     
$conn=odbc_connect(DB_DSN,DB_USR,DB_PWD);
odbc_exec($conn, "SET NAMES 'UTF8'");
odbc_exec($conn, "SET client_encoding='UTF-8'");


overvej at skifte API fra ODBC til PDO, der kan du også nemt skifte fra en database til en anden, uden at ændre i php coden *.
det eneste der ændres er din connection

din sql skal selvføgelig tilpasses den database syntax og functioner du anvender, men det gælder jo også odbc
Avatar billede okf2000 Praktikant
22. december 2014 - 14:56 #4
Fandet problemmet med min MySQL, jeg mangle at at fortælle den hvorfor en charset den skulle bruge til at hente med.

Men desværre så har det ikke virke at fortælle MSSQL´en hvorfor et charset den skal hente med.
Avatar billede okf2000 Praktikant
22. december 2014 - 15:12 #5
ene af mine problemmer at det jeg ikke kan ændre noget i SQL´ens opsæning, da den også bruges af et andet program.

Der der lige så har jeg forsøgt.

$conn=odbc_connect(DB_DSN,DB_USR,DB_PWD);
odbc_exec($conn, "SET NAMES 'UTF8'");
odbc_exec($conn, "SET client_encoding='UTF-8'");

Men det virke ikke så fik jeg læst vider på nette og MSSQL 2008 Understøtter ikke at men bruger SET NAMES.
Avatar billede jakobdo Ekspert
22. december 2014 - 15:20 #6
Ja, ÆØÅ har altid givet problemer, hvis ikke man får anvendt UTF8 fra start og hele vejen rundt.
Avatar billede okf2000 Praktikant
12. januar 2015 - 12:18 #7
fik løst mit problem ved hjælp af

$name = iconv("ISO-8859-1", "UTF-8//TRANSLIT//IGNORE", $name);

for outputet og

$search_string = iconv("UTF-8", "ISO-8859-1//TRANSLIT//IGNORE",
$search_string);

til indputet.

og så kom æøå til at virke.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester