这几个关于编码系统的设置有什么区别?

prefer-coding-system, set-default-coding-systems这两个有什么区别?

以及我该调哪一个?还是两个都调用好一点?

以及我调用了这俩之后,还用不用调用set-terminal-coding-systemset-keyboard-coding-system ?

谢谢