• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Polskie znaki w skrypcie php

Object Storage Arubacloud
0 głosów
796 wizyt
pytanie zadane 30 czerwca 2018 w PHP przez Giselus Nowicjusz (160 p.)
zamknięte 1 lipca 2018 przez Giselus

Witam!
Próbowałem rozpakować pewną grę, co już mi się udało, ale problem pojawia się w drugą stronę, tj. nie mogę jej z powrotem spakować. Otóż program nie chce wypisywać polskich znaków.
Znalazłem do tego skrypt w internecie napisany w języku php.
Oto jak wygląda:

<?php

if(!isset($argv) || !$argv[1])
{
	//$filename = "com02.out";
	die("\nCatSystem2 text -> script insertion tool\nUsage: php convert.php filename.out\n");
}
else
	$filename = $argv[1];

if(!file_exists($filename))
{
	die("\nCatSystem2 text -> script insertion tool\nFile does not exist: $filename\n");
}

$stem = explode(".", $filename);

//echo $filename;

$fp = fopen($filename, "rb");
$fp2 = fopen("..\\text\\$filename", "rb");

$output = "";

while(!feof($fp))
{
	$line = fgets($fp);
	
	$line = str_replace("\r", "", $line);
	$line = str_replace("\n", "", $line);
	
	$sp = explode("\t", $line);
	
	$needtrans = false;
	
	if(isset($sp[1]) && $sp[1] != "" && strlen($sp[1])>2)
	{
		$iscmd = false;
		
		if($sp[0] != "" && strlen($sp[1]) > 1)
		{
			$iscmd = true;
		}

		$subst = substr($sp[1],0,2);

		if(preg_match("/^[a-zA-ZęóąśłżźćńĘÓĄŚŁŻŹĆŃ]/", $sp[1]) == 0 && $subst[0] != '#' && ($subst != "\\n" || strlen($sp[1]) > 4))
			$iscmd = true;
		
		if($iscmd)
		{
			if($sp[0] == '')
				$sp[0] = "-";
			
			$trans = fgets($fp2);
			$trans = mb_convert_encoding($trans, "SJIS", "UTF-8");
			
			$trans = explode("\t", $trans);
			if(count($trans) > 1)
				$trans = $trans[1];
			else
				$trans = $trans[0];
			
			$trans = str_replace("\r", "", $trans);
			$trans = str_replace("\n", "", $trans);
			//$trans = str_replace("\t", "", $trans);
			
			$trans = str_replace("'", "`", $trans);	//Stupid system.  Backquotes are ugly.
			
			$regex = "/([0-9+]) ([a-zA-Z0-9_ęóąśłżźćńĘÓĄŚŁŻŹĆŃ]+) (.+)/i";
			
			$cnt = preg_match($regex, $sp[1]);
			
			if($cnt > 0)
			{
				//Use fullwidth spaces for options.  Since engine won't accept normal ones.
				$trans = str_replace(" ", chr(0x81).chr(0x40), $trans);  
				$sp[1] = preg_replace($regex, "$1 $2 $trans", $sp[1]);
				
				$output .= "option\t$sp[1]\r\n";
			}
			else
			{
				//If it has a continue tag (\@), make sure to append it to the translated text.
				$cont = strpos($sp[1], "\\@");
				if($cont > 0)
					$trans .= "\\@";

				preg_match_all("/[\"0-9a-zA-ZęóąśłżźćńĘÓĄŚŁŻŹĆŃ]/i", $trans, $matches);
				$matches = $matches[0];
				if(count($matches) > strlen($trans)/2) //Hopefully will only catch english lines with this...
					$trans = wordwrap($trans, 75, "\\n", true);

				$output .= "$sp[0]\t$trans"."\r\n";
			}

		}
		else
			$output .= $line."\r\n";
	}
	else
		$output .= $line."\r\n";
}

fclose($fp);

file_put_contents($filename, $output);

 

komentarz zamknięcia: Sam znalazłem odpowiedź
komentarz 30 czerwca 2018 przez Mariusz08 Maniak (62,300 p.)
Jaki masz ustawiony system kodowania? ISO? UTF8?
komentarz 30 czerwca 2018 przez efiku Szeryf (75,160 p.)
W 2018 roku:
-> Mamy edytory wspierające UTF8
-> Mamy serwer serwujący domyślnie UTF8
-> Zapisujemy w bazie domyślnie w utf8
-> Ustawiamy charset na utf8
-> Mamy skrypty o kodowaniu utf8

I nie mamy problemu z Polskimi znakami.
Sprawdź czy ty spełniasz te założenia.

W 2008 roku to się tak robiło, że ktoś kto kodował w pajączku miał domyślnie polskie kodowanie, super działało dopóki nie przenosiło się na nowszą technologię inny serwer. Czy nie mieszało kodowań.

1 odpowiedź

0 głosów
odpowiedź 1 lipca 2018 przez Giselus Nowicjusz (160 p.)
Rozwiązałem problem w inny sposób. Dowiedziałem się, że kodowanie silnika gry i tak nie ma szans obsłużyć polskich znaków, więc zmieniłem znaki specjalne w czcionce na polskie znaki. Ale dzięki za chęci.

Podobne pytania

0 głosów
1 odpowiedź 765 wizyt
pytanie zadane 27 sierpnia 2020 w PHP przez Hansik Nowicjusz (170 p.)
0 głosów
1 odpowiedź 553 wizyt
pytanie zadane 4 stycznia 2020 w PHP przez MAXIM7 Obywatel (1,990 p.)
0 głosów
1 odpowiedź 235 wizyt
pytanie zadane 12 listopada 2019 w PHP przez kingkushlee Gaduła (3,960 p.)

92,565 zapytań

141,416 odpowiedzi

319,598 komentarzy

61,949 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...