Front.php

<head>
    <meta charset="UTF-8">
</head>
<body>
    <form action="backend.php">
        <input type="text" name="asdf">
        <button type="submit">send</button>
    </form>
</body>

Backend.php

if ( php_sapi_name() === 'cli' ) {
    $test = [
        'test' => '한국어',
    ];
} else {
    $test = [
        'test' => $_POST['asdf']
    ];

}
$execRlt = exec('/usr/bin/java -Dfile.encoding=EUC-KR -classpath ... AA BB "'.$test['test'].'"');
var_dump($execRlt);

Kiedy wykonujemy ten kod w cli (php backend.php), koreański nie jest uszkodzony, ale kiedy otrzymujemy z front.php korean jest borken ... Jaką część mam sprawdzić?

0
dhtmdgkr123 20 grudzień 2019, 05:51
Tylko zgaduję, ale myślę, że utf-16 z javy jest interpretowany jako utf-8 lub gorzej. Trudno powiedzieć dokładnie, gdzie coś się gubi, ale jeśli jest to po stronie php, potrzebujesz czegoś takiego jak mb_convert_encoding($str, "UTF-8" , "UTF-16LE"); lub passthru('/usr/bin/java -D...')
 – 
Alex Barker
20 grudzień 2019, 06:34
1
Już rozwiązałem ten problem za pomocą funkcji 'mb_detect_encoding' $test['test'] = iconv(mb_detect_encoding($test['php']), 'EUC-KR', $test['php']); Dziękuję :)
 – 
dhtmdgkr123
4 styczeń 2020, 14:44

1 odpowiedź

Odpowiadam na własne pytanie!!

if ( php_sapi_name() === 'cli' ) {
    $test = [
        'test' => '한국어',
    ];
} else {
    $test = [
        'test' => $_POST['asdf']
    ];
}
$test['test'] = iconv(mb_detect_encoding($test['php']), 'EUC-KR', $test['php']);
$execRlt = exec('/usr/bin/java -Dfile.encoding=EUC-KR -classpath ... AA BB "'.$test['test'].'"');
var_dump($execRlt);

Używanie funkcji 'mb_detect_encoding' i konwertowanie kodowania na koreański nie jest zepsute!

0
dhtmdgkr123 4 styczeń 2020, 14:51