Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Jak wymusić zapis do pliku z kodowniem utf-8, Funkcja fwrite zapisuje plik kodowany jako iso 8859-5
Aleksiej
post 11.02.2024, 03:13:13
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 28.12.2007

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


Chcę napisać kod php zapisujący pliki kodowane jako utf-8.
Plik wynikowy jest plikiem tekstowym z kodami, które są przekokodowywane co czyni zapisany plik nieużytecznym.

Symulator obwodów elektronicznych QSPICE ma pliki tekstowe z symbolami tranzystorów, a ja chciałem wygenerować automatycznie cały komplet plików symboli tranzystorów z katalogu nazw tranzystorów.
https://www.qorvo.com/design-hub/design-too...eractive/qspice

Wzorzec graficznego symbolu tranzystora jest zapisany jako $s.
Wymiana nazw tranzystora na inny i zapis do pliku powinien dać nowy element jako symbol.

Problem mam taki, że plik zapisywany pozornie wygląda na poprawny, lecz nie jest zakodowany jako kod w stronie kodowej Windows, a iso.

QSPICE nie widzi tak stworzonego pliku.
Jak wymusić w PHP, by plik zapisywany przez funkcję fwrite miał binarnie strone kodową UTF, a nie ISO?

Kod
<?php

$s ='˙Ř˙Ű«symbol
  «type: QN»
  «description: NPN Bipolar Transistor»
  «library file: trany_BJ.lib»
  «shorted pins: false»
  «line (100,180) (-10,70) 0 0 0x1000000 -1 -1»
  «line (-10,-70) (100,-180) 0 0 0x1000000 -1 -1»
  «line (-20,0) (-100,0) 0 0 0x1000000 -1 -1»
  «line (100,-200) (100,-180) 0 0 0x1000000 -1 -1»
  «line (100,180) (100,200) 0 0 0x1000000 -1 -1»
  «rect (-20,100) (-10,-100) 0 0 0 0x1000000 0x1000000 -1 0 -1»
  «triangle (100,-180) (65,-125) (45,-145) 0 0 0x1000000 0x3000000 -1 -1»
  «text (200,200) 1 7 0 0x1000000 -1 -1 "Q"»
  «text (200,-200) 1 7 0 0x1000000 -1 -1 "KT940A"»
  «pin (100,200) (0,0) 1 0 0 0x0 -1 "C"»
  «pin (-100,0) (0,0) 1 0 0 0x0 -1 "B"»
  «pin (100,-200) (0,0) 1 0 0 0x0 -1 "E"»
»
';


$enc = mb_detect_encoding($s);
$s = mb_convert_encoding($s, "UTF-8", $enc);


$out = fopen("tranzystor.qsym", "w");
fwrite($out, $s);
fclose($out);
?>


Notepad++ plik powstały pokazuje pozornie jako właściwy.
QSPICE nie widzi jednak tak zapisanego symbolu tranzystora.
Symbol zapisany w QSPICE jest zakodowany w standardzie kodowania Windows.
Zapisany przez PHP ma stronę kodową iso.
UNIRED edytor pokazuje różnicę. Inne edytory kodu nie.

Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 28.04.2024 - 00:08