If you’re working with Japanese clients or inheriting systems built in Japan, you’ll inevitably run into something that might surprise you:
Shift-JIS, not UTF-8, is still widely used—especially in business systems.
Let’s take a quick tour of what Shift-JIS is, why it matters, and how to work with it.
What is Shift-JIS, and Why Does It Still Exist?
Shift-JIS (シフトJIS) is a character encoding for the Japanese language, developed in the 1980s mainly by ASCII Corporation, Microsoft (U.S.), and Mitsubishi Electric, based on JIS X 0208. It was created in the 1980s, before UTF-8 even existed, as a practical solution to represent Japanese text on computers with limited memory.
It became the de facto standard in Japan through:
- Microsoft Windows and Office products (like Excel) adopting it early.
- Legacy business systems and software built upon it.
- Broad support in Japanese hardware and applications for decades.
Even today, many Japanese government agencies, banks, and large corporations exchange data using Shift-JIS encoded CSV files.
The Excel Trap: Why UTF-8 Might Break Things
If you’re used to UTF-8 (and you should be), here’s a shocker:
Opening a UTF-8 encoded CSV file with Japanese text in Microsoft Excel (Japanese version) can result in mojibake (文字化け, garbled characters).
That’s because Excel assumes Shift-JIS by default when opening CSV files in Japan.
Here’s what happens:
- You save a CSV in UTF-8 with proper Japanese text.
- Your Japanese client double-clicks it in Excel.
- They see nonsense text instead of 日本語.
How to avoid this?
- Instead of double-clicking, ask them to import the CSV via the Data → Import from Text menu in Excel, and choose UTF-8 encoding during the import wizard.
- Alternatively, consider sending them Excel (.xlsx) files instead of CSV.
Bonus tip: Google Sheets and Apple Numbers handle UTF-8 and Shift-JIS much more gracefully.
What About the BOM?
The Byte Order Mark (BOM) is an optional marker at the start of a text file that indicates its encoding. For UTF-8, the BOM is three bytes (EF BB BF
). While not required, some Windows applications (including certain versions of Excel) rely on it to correctly detect UTF-8. If your UTF-8 CSV is showing mojibake, try saving it as “UTF-8 with BOM”. Many editors and libraries allow you to choose whether to include it.
How to Detect and Work with Shift-JIS Files
If you open a Shift-JIS file in your editor and see garbled characters (mojibake), here’s how to fix it:

- Look at the bottom-right of the window. It shows the current encoding (e.g., “UTF-8”).

- Click it and choose “Reopen with Encoding” → “Shift-JIS”.

- If you want to save the file as Shift-JIS, choose “Save with Encoding” from the same menu.


Working with Shift-JIS in Node.js
As Flagship primarily uses Node.js for app development, here are some examples:
Reading a Shift-JIS file
const fs = require('fs');
const iconv = require('iconv-lite');
try {
const buffer = fs.readFileSync('example.csv');
const content = iconv.decode(buffer, 'shift_jis');
console.log(content);
} catch (error) {
console.error('Error reading Shift-JIS file:', error.message);
}
Writing a Shift-JIS file
const fs = require('fs');
const iconv = require('iconv-lite');
const data = 'こんにちは、世界'; // Hello, world in Japanese
try {
const encoded = iconv.encode(data, 'shift_jis');
fs.writeFileSync('output.csv', encoded);
console.log('File saved as Shift-JIS.');
} catch (error) {
console.error('Error writing Shift-JIS file:', error.message);
}
Note: iconv-lite
is the most common module for handling legacy encodings like Shift-JIS in Node.js.
So… Why Not Just Move to UTF-8?
UTF-8 is the global standard, capable of representing all characters from all languages, and is supported by every modern system. But in Japan, legacy systems and business workflows die hard. Many of these systems:
- Are decades old.
- Interface with government or enterprise systems that require Shift-JIS.
- Are deeply tied to desktop applications like Excel, which default to Shift-JIS in Japanese environments.
Changing all of this means touching thousands of files, dozens of vendors, and years of technical debt—not something many businesses are eager to do unless absolutely necessary.
What Should You Do as a Developer?
✔ 1. Learn to detect Shift-JIS quickly
Use tools like file
(on UNIX-based systems), or try opening the file in VS Code or a hex editor to identify likely encodings.
Always assume Japanese CSVs might be Shift-JIS. Wrap your file I/O logic accordingly.
✔ 2. Communicate clearly with Project Managers and Japanese clients
Let them know if your files are UTF-8, and offer clear instructions on how to import them in Excel.
✔ 3. Don’t judge
Yes, Shift-JIS is old and quirky. But it’s still part of doing business in Japan, and respecting that will make your projects smoother.
Final Thoughts: Embrace the Quirks
Shift-JIS might feel like a relic of the past—but it’s a living reality in Japan’s business systems. Instead of fighting it, understand it, adapt to it, and build better systems with that knowledge.
After all, if you want to work effectively with Japan, learning how to deal with character encodings is just as important as learning Japanese etiquette.
TL;DR
💡 Shift-JIS is still common in Japan. Excel assumes it by default. UTF-8 may cause mojibake. Learn to detect, convert, and handle it with care—especially when working with CSVs.
Welcome to Japanese system development. You’re not in UTF-8-only land anymore.