Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

SOLVED

UTF8 encoding in file extract without the BOM header

anasso83525035
Level 3
Level 3

Hello,

 

I'm having an issue with a csv file extraction. The need is to have it encoded in UTF8 but ACC adds the byte order mark at the begining of the file.

 

Any idea how to get simple UTF8 extraction or remove the BOM please ?

 

Thank you.

1 Accepted Solution
Darren_Bowers
Correct answer by
Community Advisor
Community Advisor

Hi @anasso83525035 - you can get the resulting file name from the CSV extraction activity and run some Javascript to execCommand() some command line sed functions to do this (provided your host is Linux)

https://docs.adobe.com/content/help/en/campaign-classic/technicalresources/api/f-execCommand.html

https://unix.stackexchange.com/a/381263

Cheers

Darren

View solution in original post

3 Replies
Darren_Bowers
Correct answer by
Community Advisor
Community Advisor

Hi @anasso83525035 - you can get the resulting file name from the CSV extraction activity and run some Javascript to execCommand() some command line sed functions to do this (provided your host is Linux)

https://docs.adobe.com/content/help/en/campaign-classic/technicalresources/api/f-execCommand.html

https://unix.stackexchange.com/a/381263

Cheers

Darren

View solution in original post

anasso83525035
Level 3
Level 3

Hello @Darren_Bowers 

 

Thanks for the answer, I have been trying to implement that, but still get the following error :

 

-53
sudo: a password is required

 

Can you please tell me if my CMD command is constructed correctly :

 

//instance.vars.fileToSend is the complete path to the file extracted in the activity before

var CMD = '"'+"sed -i '1s/\xEF\xBB\xBF//' "+instance.vars.fileToSend+'"'

logInfo('command remove bom ===>'+CMD);
var res =execCommand(CMD,true);

instance.vars.retour = res[0];

logInfo('Code retour commande : ' + res[0]);

logInfo('Résultat commande : ' + res[1]);

logInfo('Fin');

Thank you.

Darren_Bowers
Community Advisor
Community Advisor

Hi anasso83525035- I tested your code and modified the CMD slightly and it worked on my instance:

var CMD = "sed -i '1s/^\xEF\xBB\xBF//' " + instance.vars.fileToSend;
17/11/2020 09:28:59		Workflow finished
17/11/2020 09:28:59	js7	Fin
17/11/2020 09:28:59	js7	Résultat commande : 
17/11/2020 09:28:59	js7	Code retour commande : 0
17/11/2020 09:28:59	js7	XSV-350201 Execute the command 'sed -i '1s/^//' /sftp/[redacted]/incoming/exports/Dummy_Test_20201117092859.csv' with user ''.
17/11/2020 09:28:59	js7	command remove bom ===>sed -i '1s/^//' /sftp/[redacted]/incoming/exports/Dummy_Test_20201117092859.csv
17/11/2020 09:28:59	js7	/sftp/[redacted]/incoming/exports/Dummy_Test_20201117092859.csv

Cheers

Darren