diff --git a/src/os_win32.c b/src/os_win32.c
index 4844299..3d0ba7d 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -1587,7 +1587,7 @@
 #ifdef FEAT_MBYTE
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
     {
-	WCHAR	*p = enc_to_ucs2(name, NULL);
+	WCHAR	*p = enc_to_utf16(name, NULL);
 	WCHAR	fnamew[_MAX_PATH];
 	WCHAR	*dumw;
 	long	n;
@@ -2440,7 +2440,7 @@
 
 	if (GetCurrentDirectoryW(_MAX_PATH, wbuf) != 0)
 	{
-	    char_u  *p = ucs2_to_enc(wbuf, NULL);
+	    char_u  *p = utf16_to_enc(wbuf, NULL);
 
 	    if (p != NULL)
 	    {
@@ -2466,7 +2466,7 @@
 #ifdef FEAT_MBYTE
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
     {
-	WCHAR	*p = enc_to_ucs2(name, NULL);
+	WCHAR	*p = enc_to_utf16(name, NULL);
 	long	n;
 
 	if (p != NULL)
@@ -2495,7 +2495,7 @@
 #ifdef FEAT_MBYTE
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
     {
-	WCHAR	*p = enc_to_ucs2(name, NULL);
+	WCHAR	*p = enc_to_utf16(name, NULL);
 	long	n;
 
 	if (p != NULL)
@@ -2522,7 +2522,7 @@
     WCHAR	*p = NULL;
 
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
-	p = enc_to_ucs2(name, NULL);
+	p = enc_to_utf16(name, NULL);
 #endif
 
 #ifdef FEAT_MBYTE
@@ -2590,7 +2590,7 @@
     WCHAR	*wn = NULL;
 
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
-	wn = enc_to_ucs2(fname, NULL);
+	wn = enc_to_utf16(fname, NULL);
     if (wn != NULL)
     {
 	hFile = CreateFileW(wn,		/* file name */
@@ -4239,7 +4239,7 @@
 
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
     {
-	wn = enc_to_ucs2(name, NULL);
+	wn = enc_to_utf16(name, NULL);
 	if (wn != NULL)
 	{
 	    SetFileAttributesW(wn, FILE_ATTRIBUTE_NORMAL);
@@ -4382,8 +4382,8 @@
 
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
     {
-	wold = enc_to_ucs2((char_u *)pszOldFile, NULL);
-	wnew = enc_to_ucs2((char_u *)pszNewFile, NULL);
+	wold = enc_to_utf16((char_u *)pszOldFile, NULL);
+	wnew = enc_to_utf16((char_u *)pszNewFile, NULL);
 	if (wold != NULL && wnew != NULL)
 	    retval = mch_wrename(wold, wnew);
 	vim_free(wold);
@@ -4492,7 +4492,7 @@
     WCHAR	*wn = NULL;
 
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
-	wn = enc_to_ucs2(n, NULL);
+	wn = enc_to_utf16(n, NULL);
 #endif
 
     if (mch_isdir(n))
@@ -4618,7 +4618,7 @@
 
 #if defined(FEAT_MBYTE) || defined(PROTO)
 /*
- * Version of open() that may use ucs2 file name.
+ * Version of open() that may use UTF-16 file name.
  */
     int
 mch_open(char *name, int flags, int mode)
@@ -4630,7 +4630,7 @@
 
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
     {
-	wn = enc_to_ucs2(name, NULL);
+	wn = enc_to_utf16(name, NULL);
 	if (wn != NULL)
 	{
 	    f = _wopen(wn, flags, mode);
@@ -4648,7 +4648,7 @@
 }
 
 /*
- * Version of fopen() that may use ucs2 file name.
+ * Version of fopen() that may use UTF-16 file name.
  */
     FILE *
 mch_fopen(char *name, char *mode)
@@ -4675,8 +4675,8 @@
 	else if (newMode == 'b')
 	    _set_fmode(_O_BINARY);
 # endif
-	wn = enc_to_ucs2(name, NULL);
-	wm = enc_to_ucs2(mode, NULL);
+	wn = enc_to_utf16(name, NULL);
+	wm = enc_to_utf16(mode, NULL);
 	if (wn != NULL && wm != NULL)
 	    f = _wfopen(wn, wm);
 	vim_free(wn);
@@ -4776,8 +4776,8 @@
     int			len;
 
     /* Convert the file names to wide characters. */
-    fromw = enc_to_ucs2(from, NULL);
-    tow = enc_to_ucs2(to, NULL);
+    fromw = enc_to_utf16(from, NULL);
+    tow = enc_to_utf16(to, NULL);
     if (fromw != NULL && tow != NULL)
     {
 	/* Open the file for reading. */
@@ -5122,7 +5122,7 @@
     for (i = 0; i < used_file_count; ++i)
     {
 	idx = used_file_indexes[i];
-	str = ucs2_to_enc(ArglistW[idx], NULL);
+	str = utf16_to_enc(ArglistW[idx], NULL);
 	if (str != NULL)
 	{
 #ifdef FEAT_DIFF
