I'm not an expert in character sets, but I just tested your string on my
machine with the same results.. It seems to me that the letter "i" is
ambivalent, depending on which way you check.
To see the validation for each character, i split your string up and ran
the regexp against every single char:
$string = "Awesome - I know"
$string.tochararray() | foreach {$_ ;$_ -match "(\P{IsBasicLatin})"}
This would display each letter and the correspondig result on the
console, where "I" will be the only one returning "True".
If run with:
$string.tochararray() | foreach {$_ ;[int][char]$_}
it correctly displays the ASCII-Code #73 for the letter I, which
definitely IS BasicLatin.
On the other hand, if i run it with a \p (opposed to \P), to see, if
each letter was indeed part of BasicLatin, every single character
returns a "True" value", even the "I".
Maybe this might be a workaround unless someone else can come up with a
proper explanation as to why exactly it happens and how to avoid this,
just to check every char for being basiclatin and test the result for
any one or more occurances of not passing the test.
Marcel