LoginSignup
2
1

More than 5 years have passed since last update.

Facebook Pixel Code を読み込むと、 外部から読み込んだ js 内の日本語が文字化けする。

Last updated at Posted at 2017-09-25

とてもハマったので共有。

結論

外部から読み込む js には charset をキチンと指定しましょう。。。

-<script type="text/javascript" src="/js/bundle.js"></script>
+<script type="text/javascript" charset="UTF-8" src="/js/bundle.js"></script>

事象

今まで何の問題もなく webpack でビルドした js が動いていましたが、 facebook のアド用コードを追加した途端、ファイルが文字化けしました。以下のようなコードです。

index.html
<!-- Facebook Pixel Code -->
<script>
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s)}(window,document,'script',
'https://connect.facebook.net/en_US/fbevents.js');
</script>
...
<script type="text/javascript" src="/js/bundle.js"></script>

charset="UTF-8" を外部から読み込む js に明示すると、文字化けが直りました。
原因は深く追求できていないですが、文字コードの指定などはしっかりしておくべきだと反省しました。

追記

さらに上記の修正をした後でも <meta charset="UTF-8"><head>直下に書かないと、不具合が出ていました。

<head>
+  <meta charset="UTF-8">
   <!-- Facebook Pixel Code -->
   <script>
    ...
   </script>
-  <meta charset="UTF-8">

具体的には、/url?tags[]="あいうえお" などの日本語クエリを含む api リクエストがなぜか shift-js に変換されて unable to decode value という状態になっていました。
image.png

<meta charset="UTF-8"><head>直下(Facebook Pixel Code より上)に書くことで回避できました。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1