¿El conjunto de caracteres subyacentes depende solo de la implementación de C?

Muchos textos advierten que el procesamiento.char los valores como enteros no son portátiles, por ejemplo, asumiendo que el valor de 'A' es 65 (como en ASCII).

Pero, ¿qué determina si este conjunto de caracteres es ASCII (o una forma extendida), o algún otro conjunto de caracteres? ¿Está determinado por el sistema operativo, o el compilador? Supongo que esto no depende del hardware.

Por ejemplo, ¿podría una PC Intel tener un conjunto de caracteres como EBCDIC (en teoría)? Y podría cambiar elLANG ¿La variable de entorno en Linux / Unix cambia los valores del conjunto de caracteres básico para los programas de C (si luego se compila)?

(edición: veo que ahora los diversos conjuntos de caracteres no latinos en Linux tienen los mismos códigos ASCII básicos, por ejemplo,KOI8-U - Supuse que había variaciones que tenían conjuntos de caracteres no compatibles con ASCII)

Respuestas a la pregunta(3)

Su respuesta a la pregunta