A few months ago I was working on building out a Jekyll based website for a new project that I am working on and I ran into an issue with using CodeBuild to build the website and deploy it. Every time that it tried to build the site, I would get the following error:

Invalid US-ASCII character “\xE2” on line

After doing some research, I found that that docker container that I use in CodeBuild (aws/codebuild/ruby:2.3.1) defaults to POSIX and the Troubleshooting AWS CodeBuild suggested that I add the following to my buildspec.yml file:

pre_build:
  commands:
    - export LC_ALL="en_US.UTF-8"
    - locale-gen en_US en_US.UTF-8
    - dpkg-reconfigure locales

I tried about a thousand variations of this to try and get the website deployed and after while I just switch the theme to something minimal to get it up and running and basically punted on figuring out why it didn’t work.

I returned to the site this week to make some updated and decided that I needed to fix the issue for good. After putting the new theme in place I immediately started having the issue and began the troubleshooting process all over again. After about two hours of searching and testing possible solutions, I came across a blog bost by Neil Millard about moving WordPress to Jekyll. Instead of putting in the pre_build commands as mentioned on the troubleshooting guide, Neil suggested putting in some environment_variables instead:

environment_variables:
  plaintext:
    LC_ALL: C.UTF-8
    ENV LANG: en_US.UTF-8
    ENV LANGUAGE: en_US.UTF-8

I updated my buildspec.yml file and the site started to build successfully. WOOT!