◉CLAUDE LABJP
●2.1.300 — Adds virtualText for Mod prompt decorations; background commands still running 1.5 seconds after exit are now force-killed●2.1.299 — Conversations over 200K tokens left idle about 54 minutes get compacted; MCP allow rules now match only the server they name●SONNET 4.5 — Retires on the Claude API on 11/30, 46 days left. Migrate to Sonnet 5.5●WINDOWS — Reports say hooks break silently only on Japanese-locale Windows; check the character encoding first●CACHE — Prompt cache reads on Sonnet 5.5 dropped from $0.20 to $0.10 per million tokens (Oct 7)●NEW — I Put a Ten-Line Promise File at the To…●2.1.300 — Adds virtualText for Mod prompt decorations; background commands still running 1.5 seconds after exit are now force-killed●2.1.299 — Conversations over 200K tokens left idle about 54 minutes get compacted; MCP allow rules now match only the server they name●SONNET 4.5 — Retires on the Claude API on 11/30, 46 days left. Migrate to Sonnet 5.5●WINDOWS — Reports say hooks break silently only on Japanese-locale Windows; check the character encoding first●CACHE — Prompt cache reads on Sonnet 5.5 dropped from $0.20 to $0.10 per million tokens (Oct 7)●NEW — I Put a Ten-Line Promise File at the To…
Articles/Cowork
◈ Cowork/2026-10-15Intermediate

Visible in the Listing, Zero Hits by Name: Counting Japanese Filenames With Split Dakuten

In a folder I gave Cowork, Japanese filenames were missing from name searches. Counting about 19,000 entries turned up 17 names with decomposed dakuten. Here is how I counted and fixed it.

Cowork46FilenamesUnicodePython20Dropbox3

✦ Premium Article

I was looking for a file called ページ.csv in a folder I'd handed to Cowork. It was right there in the listing, identical to what I typed. Yet find with the same name returned zero results.

The short version: the names looked the same but were different sequences of characters underneath. Below are the numbers from my own folder, how I counted, and how I'd fix it.

What was different

Unicode can write "ペ" as one character (U+30DA, NFC), or as "ヘ" followed by a combining semi-voiced mark (U+309A, NFD). On screen they're indistinguishable.

Same visible name, two searches:

Name used in the searchfind -name hits
"ページ.csv" typed on the keyboard (NFC)0
The same name converted to NFD4

The lengths differ too: 7 characters in NFC, 9 in NFD. The two invisible extras are the dakuten and handakuten.

The audit

I counted the whole folder (excluding node_modules and .git) read-only:

ItemCount
Files and folders in total19,024
Names containing non-ASCII characters43
Of those, NFD (not equal to their NFC form)17
Distinct NFD names5

About 40% of the Japanese names were NFD. What surprised me is that 17 hits were only 5 distinct names, repeated across folders. One was a Dropbox "conflict copy" name.

I haven't worked out why they ended up decomposed. Japanese names saved on a Mac sometimes stay in decomposed form, but I haven't confirmed that all 17 share one cause.

✦

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
✦You can count how many files in your own folder look present but won't match a name search, using a read-only script
✦You can add one line of normalization to any Japanese-filename lookup and prevent silent misses
✦You can build a rename pass with a dry run and a collision check, so a bulk fix never overwrites a file
Secure payment via Stripe · Cancel anytime
✦

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Claude Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • ✦Copy-paste ready implementation code
  • ✦New advanced guides published daily
  • ✦$5/mo or $10 for lifetime access
View Membership →

Related Articles

◈ Cowork2026-10-14
I Put a Ten-Line Promise File at the Top of the Folder I Gave Cowork
I kept retyping the same cautions every time I asked Cowork for help. One CLAUDE.md file at the top of the folder settled it. Here are the three things worth writing, how to check it is being read, and how to cut it back when it grows.
◈ Cowork2026-10-11
I Stopped Making Cowork Read My Whole Troubleshooting Notes — Pulling One Section by Number Cut 105 KB to 1.5 KB
A record of turning a 105 KB file of web-ops troubleshooting notes into something you query by number. My first extraction script could reach only 30 of 120 numbers, and #70 came back as zero bytes. The fixed awk, a zero-byte check, and measured section sizes are all here.
◈ Cowork2026-10-01
Before You Trim a Scheduled Task's Runbook, Count How Many Times It Gets Re-read
I cut 13 KB from a scheduled task's preloaded docs, and recounted by re-reads it was worth about 1.3 tool calls. Here is the ledger that counts re-reads, and a shell helper that records bytes during a run.