[Solved] tr:Illegal byte sequence

By onjsdev

Jan 4th, 2024

The tr:Illegal byte sequence error is a common error you can face in the bash scripting when working with the tr command in Unix-like operating systems such as MacOS and Linux.

Let' explore the causes of this issue and presents effective solutions to resolve it.

Understanding the Error

The tr command is used for translating or deleting characters. The tr:Illegal byte sequence error occurs when tr encounters characters that it cannot handle or interpret. This problem is particularly common when dealing with non-ASCII or special characters.

How to Solve It

A common approach to dealing with character encoding issues is to set LC_ALL=C. This environment variable forces the system to use the C locale, which employs a basic character set and typically avoids many locale-related problems.

Here’s how you can use LC_ALL=C with the tr command:

echo $(cat /dev/urandom | LC_ALL=C tr -dc 'a-zA-Z0-9' | head -c 12)

Adding LC_ALL=C just before the tr command sets the locale to the default C locale, so that it mitigates potential issues with certain character encodings.

Here is another example:

LC_ALL=C tr 'old_chars' 'new_chars' < input.txt > output.txt

Once again, including LC_ALL=C ensures a consistent locale, reducing the risk of encountering byte sequence errors.


By incorporating the recommended modifications to the tr command and ensuring a consistent locale setting with LC_ALL=C, you can successfully overcome this error and execute the commands without disruptions.

If you want to learn more about Bash Scripting, then you can read the following articles:

Thank you for reading