shell — Php не поддерживает математические символы

Я нахожусь в процессе преобразования латекса в mathml в php.Texmath — это инструмент командной строки, с помощью которого можно выполнить процесс преобразования.

Латексный файл:

\mathbf{f} = (f_{1},
f_{2})^{\prime}

test.php:

shell_exec('echo "password" | sudo -S /root/.cabal/bin/texmath latexfile > outputfile');

Если я запускаю этот php-файл через командную строку, он генерирует желаемый выходной файл, который находится ниже
скрипт командной строки: php test.php

 <math display="block" xmlns="http://www.w3.org/1998/Math/MathML">
<mrow>
<mstyle mathvariant="bold">
<mi>��</mi>
</mstyle>
<mo>=</mo>
<mo stretchy="false" form="prefix">(</mo>
<msub>
<mi>f</mi>
<mn>1</mn>
</msub>
<mo>,</mo>
<msub>
<mi>f</mi>
<mn>2</mn>
</msub>
<msup>
<mo stretchy="false" form="postfix">)</mo>
<mo>′</mo>
</msup>
</mrow>
</math>

Когда я запускаю этот файл php через браузер, я получаю выходной файл как

<math display="block" xmlns="http://www.w3.org/1998/Math/MathML">
<mrow>
<mstyle mathvariant="bold">
<mi>

Он игнорирует все символы математики. Почему он дает желаемый вывод только через командную строку, а не через браузер. Когда я открываю эти два файла в редакторе, он отображает «UTF-8». Это проблема кодировки символов? Как это решить.

0

Решение

Обязательно добавьте эту строку перед отправкой любого вывода в браузер:

header('Content-Type: application/mathml+xml; charset=utf-8');

Таким образом, вы сообщаете браузеру, что ваша страница будет MathML-файлом с кодировкой UTF-8. Если вы используете веб-сервер, обязательно добавьте требуемый тип MIME в список поддерживаемых форматов.

С другой стороны, вы можете добавить заголовок utf-8 к самому файлу. Согласно Википедии, это должен быть заголовок вашего файла:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN""http://www.w3.org/Math/DTD/mathml2/mathml2.dtd">
1

Другие решения

Вы можете попробовать написать <мили>&# X1D487;</ mi> вместо.

Я имею в виду: использовать шестнадцатеричный объект вместо использования символа.

Вышеуказанное число было взято из http://en.wikipedia.org/wiki/Mathematical_Alphanumeric_Symbols#Unicode_chart .

0

Просто я изменил lang, как показано ниже, до shell_exec

$locale = 'en_US.utf-8';
setlocale(LC_ALL, $locale);
putenv('LC_ALL='.$locale);
shell_exec('echo "password" | sudo -S /root/.cabal/bin/texmath latexfile > outputfile');

Затем он генерирует файл со специальными символами. По рекомендации ТАК

0
По вопросам рекламы [email protected]