Thanks for attaching the files. From that I noticed, you wanted the option to select multiple fields. I modified the validator code in your other post for this option.
I believe that the encoding issues arise because the tool interface appears to pass values that contain special characters in single quotes. From the tool printout, note line 7 below. The two fields with special characters are enclosed within single quotes and inside double quotes.
Executing: encodingtest C:\path\to\folder\encoding 'Chl_A (µg/L)';'Temperature (°C)';pH
Start Time: Sun Feb 24 19:55:53 2019
Running script encodingtest...
Table view field names: ['Original_file_&_sheet', 'Campaign', 'Profile_No', 'Date', 'Longitude (degrees_east)', 'Latitude (degrees_north)', 'Depth (m)', 'Temperature (\xc2\xb0C)', 'pH', 'Chl_A (\xc2\xb5g/L)', 'UID', 'UIDGraph']
fieldnamesliste from parameter: ["'Chl_A (\xc2\xb5g/L)'", "'Temperature (\xc2\xb0C)'", 'pH']
By trimming the quotes, I was able to get your script to work. Here's the section I modified; it starts around line 142 in the original code. The .decode("utf-8") in line 4 below may be the result of some of the encoding/decoding you were doing earlier in the script. I'm not sure what of that code can safely be removed.
def PrintPlot(gs, gsNr, table, fieldname, min, max, xlabelname, colorL):
if fieldname[0] == "'":
arcpy.AddMessage("apostrophe found")
fieldname = fieldname[1:-1].decode("utf-8")
xlabelname = fieldname
fields = [fieldname, "Depth (m)"]
Hope this helps.