Оба PRB: свойство Charset объекта потока ADO может потребовать обновления Microsoft Internet Explorer и Свойство Charset (ADO) предполагает, что значения ADO CharSet перечислены в HKEY_CLASSES_ROOT\MIME\Database\Charset
, но явно не вся история.
Например, оба значения "ascii" и "us-ascii" перечислены там как псевдонимы "iso-8859-1", однако, работая с моим языковым стандартом, установленным в США, они действуют как 7-битный MIME-тип ASCII. Им почти придется это делать, так как в любом случае больше ничего не предусмотрено для запроса 7-битной кодировки ASCII.
Это дает результат, который вам нужен:
Option Explicit
Private Sub Main()
Dim fileStream As ADODB.Stream
Dim inputString As String
Const FileName As String = "outputfile.txt"
Set fileStream = New ADODB.Stream
inputString = "The thing is that when a special character" & vbNewLine _
& "from extended ASCII appears as ä, ü, á it" & vbNewLine _
& "is transformed in the output to the matching" & vbNewLine _
& "basic ASCII char like a, u, a." & vbNewLine
With fileStream
.Type = adTypeText
.Charset = "iso-8859-1"
.Open
.WriteText inputString
.SaveToFile FileName, adSaveCreateOverWrite
.Close
End With
End Sub
Выход:
The thing is that when a special character
from extended ASCII appears as ä, ü, á it
is transformed in the output to the matching
basic ASCII char like a, u, a.
Мы должны предположить, что запрос «ascii» (все значения в нижнем регистре, хотя явно не чувствительны к регистру) означает 7-битный ASCII, возможно локализованный.
Использование UTF-8 - плохая идея, если вы не хотите UTF-8. Хотя многие системы * nix делают вид, что нет никакой разницы, Stream запишет спецификацию, и, конечно, эти расширенные (не ASCII) символы кодируются многобайтовыми кодами.