wkhtmltopdf,编码来自perl管道的西里尔字母

时间:2017-09-13 08:11:35

标签: perl encoding wkhtmltopdf

所以,我正在从perl的system方法运行wkhtmltopdf命令脚本。我需要它通过命令行将自定义值(span类)传递给pdf:

我的$ time =“Время”;
my $ command =“./ wkhtmltopdf ... blablabla ... gen_date \”$ time \“... blablabla ...”;

但是当我运行它时 - 我在输出.pdf中编码垃圾就像那样: - ÐÑÐμмÑ。 尝试了我所知道的几乎所有编码/解码$time字符串,但没有。

我的javascript代码段对于wkhtmltopdf很常见,所以......

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<head>
  <script>
    function subst() {
      var vars = {};
      var query_strings_from_url = document.location.search.substring(1).split('&');
      for (var query_string in query_strings_from_url) {
        if (query_strings_from_url.hasOwnProperty(query_string)) {
          var temp_var = query_strings_from_url[query_string].split('=', 2);
          vars[temp_var[0]] = decodeURI(temp_var[1]);
        }
      }
      var css_selector_classes = ['gen_date', 'page'];
      for (var css_class in css_selector_classes) {
        if (css_selector_classes.hasOwnProperty(css_class)) {
          var element = document.getElementsByClassName(css_selector_classes[css_class]);
          for (var j = 0; j < element.length; ++j) {
            element[j].textContent = vars[css_selector_classes[css_class]];
          }
        }
      }
    }
  </script>
</head>

你能帮我解决一下吗?

1 个答案:

答案 0 :(得分:0)

找到rason之后为什么会发生这种情况,我发现JS更有可能以其字节数组的格式运行。现在,西里尔字符串被编码为%u0000%u0000...,然后在javascript中,此字符串通过内置unescape函数,现在我在pdf中有正常的西里尔字符串。

哦,我的......