title: What does set_locale(LC_CTYPE, 'C'); actually do?
body: <p>When my PHP script is run with UTF-8 encoding, using non-ASCII characters, some PHP functions like <code>strtolower()</code> don't work.</p>
  
  <p>I could use mb_strtolower, but this script can be run on all sorts of different platforms and configurations, and the multibyte string extension might not be available. I could check whether the function exists before use, but I have string functions littered throughout my code and would rather not replace every instance.</p>
  
  <p>Someone suggested using <code>set_locale(LC_CTYPE, 'C')</code>, which he says causes the string functions to work correctly. This sounds fine, but I don't want to introduce that change without understanding exactly what it is doing. I have used set_locale to change the formatting of numbers before, but I have not used the <code>LC_CTYPE</code> flag before, and I don't really understand what it does. What does the value <code>'C'</code> mean?</p>