MicrosoftDocs / sysinternals

Content for sysinternals.com
http://sysinternals.com
Creative Commons Attribution 4.0 International
483 stars 262 forks source link

[BUG] Strings64 v2.54 is unable to fully extract an error message if an accented character (i.e. 'è' (small'e'GraveAccent)) is present within. #800

Open SwimmeRM opened 6 months ago

SwimmeRM commented 6 months ago

Strings64 v2.54 is unable to fully extract an error message if an accented character (i.e. 'è' (small'e'GraveAccent)) is present within. Error message extraction can only work until last character before accented one. (This bug was discovered when doing further investigations for another bug already submitted as bug #799 now opened). Also adding here an extracted error result file & more additional screenshots also helping to evidence issue:

P.S. Even if so far untested by me same error is very likely expected to be found also in x86 version of Strings v2.54. Test results always from Windows 7 SP1 x64 Ultimate client.

17:20 06/04/2024

Today I only came back here again only because I thought I probably understood reason behind issue I reported here but now I've also been made quite uncertain if this my assumption might be valid (see also my last update in #799 that I opened before further widening issue scope here for additional Strings64 applicability). Anyway, here is (for what if I thought I nearly understood) just like if the display of the error message was only generated for being displayed with codepage 1242 (so Windows own default one) together with codepage 437 (used by CMD in US), instead of codepage 850 that is CMD default one on my Windows 7 SP1 x64 Ultimate that is a MUI (Multilingual) version but obviously originally setup only for Italy, my country, and Italian, my language. And here's a screenshot describing how I reached this partial conclusion (also related to the fact that System32\it-IT\KernelBase.dll.mui contents are written in Unicode): Notepad_ShowingThatVerySimilarEffectsCanBeDisplayedBySimplyTemporarilyChangingCMDsessionCodePageFrom1242(Windows)BackTo850(DefaultForItaly)_#4

So, what it also means is that if my assumption was right too, then to really be sure to avoid same issue, every Sysinternals utility should, always check which is default code page being used by CMD when they're started in a such session, then upon receiving a localized system error message from Kernel it should quickly reconvert it to avoid what it seems to be a default display for codepage 1242 (Windows default one) but back into a codepage 850 which is CMD default one for Italy.