Является ли php htmlspecialchars безопасным для JS?
var jsVar = "<?php echo(str_replace(array("\r\n", "\n","\r"), "\\n",htmlspecialchars($_GET['p'], ENT_QUOTES))); ?>";
Как насчет многобайтовых символов?
Нет. Для этого вы должны использовать json_encode (JSON = Javascript нотация).
json_encode
var foo = <?php echo json_encode('Foo "Bar" Baz'); ?>;
htmlspecialchars экранирует символы, которые имеют особое значение в HTML. Литералы Javascript содержат другие специальные символы, о которых вам нужно позаботиться, поэтому экранирование HTML не имеет смысла.
htmlspecialchars