Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [inne]ISO-8859-2 a znaki z MS Word
Skie
post
Post #1





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


Witam,
czy da się w jakiś sposób na stronie z kodowaniem ISO-8859-2 wyświetlać znaczki specjalne MS Word?

Czyli np. „

Samo dodanie czegoś takiego do jakiegoś string'a na stronie powoduje, że zamiast niego wyświetla się pytajnik (tak jak przy złym kodowaniu).
Dodam, że próbowałem też zastosować do tego iconv(), ale z marnym skutkiem :-/

Dlaczego tak się dzieje i jak rozwiązać taki problem?

Z góry dzięki za wszystkie pomocne sugestie.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Skie
post
Post #2





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


Skoro próbowałem htmlspecialchars to chyba logiczne, że inne funkcje z tej dziedziny też wypróbowałem (IMG:style_emoticons/default/tongue.gif)

Koniec końców częściowym rozwiązaniem tego problemu jest funkcja:

  1. function win1252toIso( $string ) {
  2. // These chars seem to be not contained
  3. // in php's CP1252 translation table
  4. static $extensions = array(
  5. 142 => "Ž",
  6. 158 => "ž"
  7. );
  8. // Go through string and decide char by char:
  9. // "leave as is or build entity?"
  10. $newStr = "";
  11. for( $i=0; $i < strlen( $string ); $i++ ) {
  12. $ord = ord( $string[$i] );
  13. if ( in_array( $ord, array_keys( $extensions ) ) ) {
  14. // build entity using extra translation table
  15. $newStr .= $extensions[$ord];
  16. }
  17. else {
  18. // build entity using php's translation table
  19. // or leave as is
  20. $newStr .= ( $ord > 127 && $ord < 160 ) ?
  21. htmlentities( $string[$i], ENT_NOQUOTES, "CP1252" )
  22. : $string[$i];
  23. }
  24. }
  25. return $newStr;
  26. }


Aczkolwiek dla tekstu wpisanego w stronę, a żeby przesłać formularz muszę pobawić się w zmienianie znaków z poziomu JS - (strona na AJAXie).
W każdym razie temat do zamknięcia :-)

EDIT:

Mam już pełne rozwiązanie także dla JSa :-)

Kod
replaceWordChars = function(text) {
    var s = text;
    s = s.replace(/[\u2018|\u2019|\u201A]/g, "\'");
    s = s.replace(/[\u201C|\u201D|\u201E]/g, "\"");
    s = s.replace(/\u2026/g, "...");
    s = s.replace(/[\u2013|\u2014]/g, "-");
    s = s.replace(/\u02C6/g, "^");
    s = s.replace(/\u2039/g, "<");
    s = s.replace(/\u203A/g, ">");
    s = s.replace(/[\u02DC|\u00A0]/g, " ");

    return s;
};


Ten post edytował Skie 1.04.2010, 21:22:13
Go to the top of the page
+Quote Post

Posty w temacie
- Skie   [inne]ISO-8859-2 a znaki z MS Word   1.04.2010, 19:29:49
- - Pawel_W   używaj encji   1.04.2010, 19:31:48
- - Skie   Zrobiłbym tak gdyby chodziło tylko o problem z moj...   1.04.2010, 19:36:40
- - Pawel_W   no to htmlspecialchars   1.04.2010, 19:39:32
- - Skie   Próbowałem i także nie pomaga. Kod$str = htm...   1.04.2010, 19:42:37
- - thek   htmlentities?   1.04.2010, 20:31:14
- - Skie   Skoro próbowałem htmlspecialchars to chyba logiczn...   1.04.2010, 21:04:03


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: 26.09.2025 - 01:36