<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBS: Функция замены диакритических знаков схожими латинскими знаками]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=12594</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=12594&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBS: Функция замены диакритических знаков схожими латинскими знаками».]]></description>
		<lastBuildDate>Thu, 04 May 2017 23:32:59 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBS: Функция замены диакритических знаков схожими латинскими знаками]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=115671#p115671</link>
			<description><![CDATA[<p>Всего таких знаков 221 среди основных в диапазоне кодов 192..609:</p><div class="quotebox"><blockquote><p>À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù Ú Û Ü Ý à á â ã ä å æ ç è é ê ë ì í î ï ñ ò ó ô õ ö ø ù ú û ü ý ÿ Ā ā Ă ă Ą ą Ć ć Ĉ ĉ Ċ ċ Č č Ď ď Đ đ Ē ē Ĕ ĕ Ė ė Ę ę Ě ě Ĝ ĝ Ğ ğ Ġ ġ Ģ ģ Ĥ ĥ Ħ ħ Ĩ ĩ Ī ī Ĭ ĭ Į į İ ı Ĵ ĵ Ķ ķ Ĺ ĺ Ļ ļ Ľ ľ Ł ł Ń ń Ņ ņ Ň ň Ō ō Ŏ ŏ Ő ő Œ œ Ŕ ŕ Ŗ ŗ Ř ř Ś ś Ŝ ŝ Ş ş Š š Ţ ţ Ť ť Ŧ ŧ Ũ ũ Ū ū Ŭ ŭ Ů ů Ű ű Ų ų Ŵ ŵ Ŷ ŷ Ÿ Ź ź Ż ż Ž ž ƀ Ɖ Ƒ ƒ Ɨ ƚ Ɵ Ơ ơ ƫ Ʈ Ư ư ƶ Ǎ ǎ Ǐ ǐ Ǒ ǒ Ǔ ǔ Ǖ ǖ Ǘ ǘ Ǚ ǚ Ǜ ǜ Ǟ ǟ Ǥ ǥ Ǧ ǧ Ǩ ǩ Ǫ ǫ Ǭ ǭ ǰ ɡ</p></blockquote></div><p>Можно расширить строки s1 и s2 в представленной выше функции, а я в свое время использовал следующий код:<br /></p><div class="codebox"><pre><code>
Option Explicit

Dim oDiaDict

&#039; Инициализация словаря единократно при запуске
Set oDiaDict = GetDiaDict()

&#039; Проверка
MsgBox Replace_Diacritics(&quot;ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝàáâãäåæçèéêëìíîïñòóôõöøùúûüýÿĀāĂăĄąĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıĴĵĶķĹĺĻļĽľŁłŃńŅņŇňŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžƀƉƑƒƗƚƟƠơƫƮƯưƶǍǎǏǐǑǒǓǔǕǖǗǘǙǚǛǜǞǟǤǥǦǧǨǩǪǫǬǭǰɡ&quot;, oDiaDict)

Function Replace_Diacritics(sText, oDict)
	
	Dim i, sChar, aRes
	
	aRes = Array()
	ReDim aRes(Len(sText))
	For i = 1 To Len(sText)
		sChar = Mid(sText, i, 1)
		If oDict.Exists(sChar) Then
			aRes(i) = oDict(sChar)
		Else
			aRes(i) = sChar
		End If
	Next
	Replace_Diacritics = Join(aRes, &quot;&quot;)
	
End Function
	
Function GetDiaDict()
	
	Dim oDict, i, sRange, sCured, sChar
	
	Set oDict = CreateObject(&quot;Scripting.Dictionary&quot;)
	sRange = &quot;&quot;
	For i = 192 To 609
		sRange = sRange &amp; ChrW(i)
	Next
	With CreateObject(&quot;ADODB.Stream&quot;)
		.Type = 2
		.Mode = 3
		.Open
		.Charset = &quot;ascii&quot;
		.WriteText sRange
		.Position = 0
		sCured = .ReadText
		.Close
	End With
	For i = 192 To 609
		sChar = Mid(sCured, i - 191, 1)
		If sChar &lt;&gt; &quot;?&quot; Then oDict(ChrW(i)) = sChar
	Next
	Set GetDiaDict = oDict
	
End Function</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (omegastripes)]]></author>
			<pubDate>Thu, 04 May 2017 23:32:59 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=115671#p115671</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Функция замены диакритических знаков схожими латинскими знаками]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=114698#p114698</link>
			<description><![CDATA[<p>Спасибо.</p>]]></description>
			<author><![CDATA[null@example.com (929151)]]></author>
			<pubDate>Thu, 06 Apr 2017 14:58:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=114698#p114698</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Функция замены диакритических знаков схожими латинскими знаками]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=114692#p114692</link>
			<description><![CDATA[<p>Сохранил код в UTF-16, запустил, на выходе только A. В коде проблем не вижу.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Thu, 06 Apr 2017 14:45:05 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=114692#p114692</guid>
		</item>
		<item>
			<title><![CDATA[VBS: Функция замены диакритических знаков схожими латинскими знаками]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=114691#p114691</link>
			<description><![CDATA[<p>Нашёл функцию замены, но результат работы совсем не устраивает.<br /></p><div class="codebox"><pre><code>
Option Explicit
Function EliminarAcentos(text)
    Dim i, s1, s2
    s1 = &quot;ÁÀÉÈÍÏÓÒÚÜáàèéíïóòúüñçâ&quot;
    s2 = &quot;AAEEIIOOUUaaeeiioouunca&quot;
    If Len(text) &lt;&gt; 0 Then
        For i = 1 To Len(s1)
            text = Replace(text, Mid(s1,i,1), Mid(s2,i,1))
        Next
    End If
    EliminarAcentos = text
End Function

WScript.Echo EliminarAcentos(&quot;Á&quot;)</code></pre></div><p>В итоге на выходе получаю двойное &quot;AA&quot;, а нужно одно А.</p>]]></description>
			<author><![CDATA[null@example.com (929151)]]></author>
			<pubDate>Thu, 06 Apr 2017 14:38:15 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=114691#p114691</guid>
		</item>
	</channel>
</rss>
