こんにちは、みんな!
トルコ語では、アルファベットの文字の1つは異なる動作をします。それは、I-とi-です。英語では、Iとiは大文字と小文字です。トルコ語では、Iの小文字はiではなく、ıです。
したがって、トルコの環境(つまり、Windows)では、「DOMAIN.COM」と「domain.com」は等しくありません。メールの転送とDNSは完全に英語であるため、メールアドレスに大文字のIが含まれていると、問題が発生する可能性があります。
C#では、 InvariantCultureIgnoreCaseフラグを使用して問題を修正できます。
// Mock
string localDomain = "domain.com";
string mailAddress = "USER@DOMAIN.COM";
string domainOfAddress = mailAddress.Split('@')[1];
string localInbox = "";
//
// Local inbox check
//Case insensitive method
bool ignoreCase = true; // Equal to StringComparison.CurrentCultureIgnoreCase
if (System.String.Compare(localDomain, domainOfAddress, ignoreCase) == 0)
{
// This one fails in Turkish environment
localInbox = mailAddress.Split('@')[0];
}
//Culture-safe version
if (System.String.Compare(localDomain, domainOfAddress, StringComparison.InvariantCultureIgnoreCase) == 0)
{
// This one is the correct/universal method
localInbox = mailAddress.Split('@')[0];
}
私はC++の経験がないので、これら2つの例に相当するC ++は何でしょうか?