Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pobieranie danych i krzaki
masterix
post
Post #1





Grupa: Zarejestrowani
Postów: 93
Pomógł: 0
Dołączył: 7.09.2004

Ostrzeżenie: (0%)
-----


Witam,

Pobieram sobie dane za pomocą cURL'a ze strony, która ma ustawione kodowanie znaków na windows-1250. W bazie mam ustawione wszystko na latin2( do tej bazy zapisuję pobrane dane ). No i jak pobieram z bazy to na stronie mam krzaczki ( kodowanie iso-8859-2 ). Dałem zapytanie tuż po połączeniu z bazą:
Kod:
  1. SET CHARSET latin2

ale to niewiele pomogło.

Czy można coś na to poradzić? Czy jestem zmuszony zmienić kodowanie na swojej stronie i w bazie danych?

pzdr.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
masterix
post
Post #2





Grupa: Zarejestrowani
Postów: 93
Pomógł: 0
Dołączył: 7.09.2004

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $pdo = new PDO('mysql:host=localhost;dbname='.$db, $user, $pass);
  3.  
  4.  
  5.  
  6. $pdo -> setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
  7.  
  8. $pdo -> query( 'SET CHARSET utf8' );
  9.  
  10. $stmt = $pdo -> prepare( 'INSERT INTO `documents`( id, type, name, year, number, text ) VALUES( null, "Konstytucja i kodeksy", :name, :year, :number, :text ) ' );
  11.  
  12. $stmt -> bindParam( ':name', $name, PDO::PARAM_STR );
  13.  
  14. $stmt -> bindParam( ':year', $year, PDO::PARAM_STR );
  15.  
  16. $stmt -> bindParam( ':number', $number, PDO::PARAM_INT );
  17.  
  18. $stmt -> bindParam( ':text', $text );
  19.  
  20.  
  21.  
  22.  
  23.  
  24. $number = 1;
  25.  
  26. $year = 0;
  27.  
  28. foreach( $addr_array as $postfix => $title )
  29.  
  30. {
  31.  
  32. $cr_tmp = curl_init( $base_addr . $postfix );
  33.  
  34. curl_setopt( $cr_tmp, CURLOPT_RETURNTRANSFER, TRUE );
  35.  
  36. $law = curl_exec( $cr_tmp );
  37.  
  38. curl_close( $cr_tmp );
  39.  
  40. $text = substr( $law, strpos( $law, '<table class="txs">') );
  41.  
  42. preg_match( '%Dz.U.[0-9]+.[0-9]+.[0-9]+%', $text, $names );
  43.  
  44. $text = iconv( "CP1250", "UTF-8", $text );
  45.  
  46. $name = $title .' - ' .$names[0];
  47.  
  48. $stmt -> execute();
  49.  
  50. //echo 
  51.  
  52. ++$number;
  53.  
  54. }
  55. ?>
Ten działa poprawnie.
  1. <?php
  2. $stmt = $pdo -> prepare( "INSERT INTO institutes VALUES( null, 'sad', :name, :district, :text ) " );
  3.  
  4. $stmt -> bindParam( ':name', $name, PDO::PARAM_STR );
  5.  
  6. $stmt -> bindParam( ':district', $district, PDO::PARAM_STR );
  7.  
  8. $stmt -> bindParam( ':text', $text, PDO::PARAM_STR );
  9.  
  10.  
  11.  
  12. $number = 0;
  13.  
  14. foreach( $urls as $url )
  15.  
  16. {
  17.  
  18. $cr = curl_init( $url );
  19.  
  20. curl_setopt( $cr, CURLOPT_RETURNTRANSFER , TRUE );
  21.  
  22. $content = curl_exec( $cr );
  23.  
  24. curl_close( $cr );
  25.  
  26. $content = substr( $content, strpos( $content, '<div class="name">') );
  27.  
  28. preg_match( '%class="name">(.*?)</div>%i', $content, $names );
  29.  
  30. $name = iconv( "CP1250", "UTF-8", $names[1] );
  31.  
  32. $text = preg_replace( '%<!--STOPKA-->(.*?)%i', '', $content );
  33.  
  34. $text = strip_tags( $text, '<div><b><p><a>' );
  35.  
  36. $text = iconv( "CP1250", "UTF-8", $text );
  37.  
  38. $district = iconv( "CP1250", "UTF-8", $districts[ $number ] );
  39.  
  40. $stmt -> execute();
  41.  
  42. ++$number;
  43.  
  44. }
  45. ?>
A ten już nie. Wg mnie to robię konwersję w ten sam sposób, Jednak w jednym przypadku to działą a w drugim nie...

W niedziałającym przypadku brakowało SET CHARSET utf8 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.12.2025 - 05:30