Standard Additions’s “read as Unicode text” reads as UTF-16 – for UTF-8 use “read as «class utf8»”.
To answer your question directly:
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
on convertTextFileAt:posixPath
set pathNSString to current application's NSString's stringWithString:posixPath
set theExt to pathNSString's pathExtension()
if theExt as text is "txt" then
set theNSData to current application's NSData's dataWithContentsOfFile:posixPath
set theOptionsDict to current application's NSDictionary's dictionaryWithObject:false ¬
forKey:(current application's NSStringEncodingDetectionAllowLossyKey)
set {theEncoding, theNSString} to current application's NSString's stringEncodingForData:theNSData ¬
encodingOptions:theOptionsDict convertedString:(reference) usedLossyConversion:(missing value)
if theEncoding = 0 then
error "Unknown encoding"
end if
set theNewPath to pathNSString's stringByDeletingPathExtension()'s stringByAppendingString:"-utf8.txt"
theNSString's writeToFile:theNewPath atomically:true encoding:(current application's NSUTF8StringEncoding) |error|:(missing value)
end if
end convertTextFileAt: