How can they mistakenly write a 0 instead of an O if both do not ever exist in a base58check encoded string? There is no way they can swap these 2 even if they have no idea that neither is part of the base58check alphabet.
Even though their key can still be recovered, they'll need to figure out the problem before doing so.
If you entered those characters into a wallet such as Electrum, it wouldn't allow you to proceed with the recovery, but you wouldn't know why exactly.
This would be a great feature for Electrum to add: automatically replace non-existing characters by the likely equivalent instead of graying out the Next button.
As for the HD seed discussion or marking upper case: that's great advice if you're creating a new cold storage now, but it doesn't help you if you're stuck with a written down private key (the hand written key
I received 3 years ago still has a substantial amount of money in it).
Here's the typed version of my own handwriting:
1. KyHmMbp1TvBNBzi6uAAekb6DwtCsUJyYXG
5CDrkDv
zsCc8h4UfmD (I was in doubt: the z could have been a 2)
2. L40n7wrsP2vPyDkYKyTKnEudCTmU9
kyH6ra6hiZXzhZWmQzM7v9g (the k could have been a K)
3. L1YqE8Y8FPn2fdBxMfe8wwU3bT5NPEfxMxLujHKpyYS7nrBLzv9K
I've typed all keys twice in an editor, then used CTRL-C to check if they match. Key 1. didn't match my second typing: I had omitted the green 5 the first time.
Now for the real comparison:
1. KyHmMbp1TvBNBzi6uAAekb6DwtCsUJyYXG5CDrkDv
2sCc8h4UfmD original
1. KyHmMbp1TvBNBzi6uAAekb6DwtCsUJyYXG5CDrkDv
zsCc8h4UfmD typed after writing it down
This confirmed my susicion.
2. L4
on7wrsP2vPyDkYKyTKnEudCTmU9kyH6ra6hiZXzhZWmQzM7v9g original
2. L4
0n7wrsP2vPyDkYKyTKnEudCTmU9kyH6ra6hiZXzhZWmQzM7v9g typed after writing it down
I didn't notice this while typing, but it's not something that's hard to detect.
3. No differences between the original and what I typed in after writing it down.
Conclusion: I hate writing
But so far this shouldn't be hard to figure out and restore when needed.
Note: when using CTRL-F, tick "Match Case".